Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Прервать условие (https://javascript.ru/forum/jquery/44444-prervat-uslovie.html)

Davert Tanz 20.01.2014 00:28

Прервать условие
 
Вот код, хочу сделать, чтобы при клике на ссылку - проверялся последний символ атрибута и если он совпадает с заданным условием, то загружать нужный файл. Но проблема, что в любом случае условия проверяются все и выдается только последний загруженный файл.
Может есть способ как выйти из условия? Или такое можно по-другому реализовать?

$(document).ready(function() {
	$('a[href ^= #urok]').click( function () {	
		if ('a[ href $= 1]') $('div#text').load('text/1.txt');
		if ('a[ href $= 2]') $('div#text').load('text/2.txt');
		if ('a[ href $= 3]') $('div#text').load('text/3.txt');
		if ('a[ href $= 4]') $('div#text').load('text/4.txt');
		if ('a[ href $= 5]') $('div#text').load('text/5.txt');
	});
});

krasovsky 20.01.2014 11:35

Странно как у тебя вообще вообще работает

$(document).ready(function() {
	$('a[href ^= #urok]').click( function () {	
                var slef = $(this);
		if (self.attr('href').match('2')) { $('div#text').load('text/1.txt') } //и так для всех
	});
});

Примерно так - при клике на ссылку нужно использовать this - это указатель на ссылку по которой кликнули. И теперь у этого this надо проверить последний симовол, а не у всех подряд.
.match('2') - проверяет если ли в Href этой ссылки двойка. (не обязательно последний символ). Если нужно строго последний символ проверять читай, разбирайся - http://javascript.ru/String , http://javascript.ru/RegExp

Davert Tanz 20.01.2014 22:22

Спасибо большое!
Буду дальше разбираться и прочту приведенные ссылки!

рони 20.01.2014 22:46

Davert Tanz,
Вариант ... :write:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script>
$(document).ready(function () {
  var $urok = $('a[href ^= #urok]');
    $('body').on('click', $urok, function (event) {
        var indx = $urok.index(event.target) + 1;
        // $('div#text').load('text/'+indx+'.txt');
        alert('text/' + indx + '.txt')
        return false
    });
});
  </script>
</head>
<body>
<a href="#urok1">1</a>
<a href="#urok2">2</a>
<a href="#urok3">3</a>
<a href="#urok4">4</a>
<a href="#urok5">5</a>
</body>
</html>

Davert Tanz 21.01.2014 14:26

krasovsky, сделал как у Вас написано.
Всё сработало в Мозиле. Попробовал в Хроме и ИЕ - там не прокатывает это дело.
В хроме ошибку выдает:
event.returnValue is deprecated. Please use the standard event.preventDefault() instead.
Failed to load resource: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

Vlasenko Fedor 21.01.2014 16:20

еще вариант
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
      $(function () {
        $('body').on('click', 'a[href ^= #urok]', function () {
         alert('text/' + this.hash.replace("#urok","") + '.txt')
          return false
        });
      });
    </script>
  </head>
  
  <body>
    <a href="#urok1">1</a>
    <a href="#urok2">2</a>
    <a href="#urok3">3</a>
    <a href="#urok4">4</a>
    <a href="#urok5">5</a>
  </body>

Davert Tanz 21.01.2014 23:09

Poznakomlus, как вариант будет в копилке, спасибо :)

Но все же - как можно убрать эти ошибки в хроме?
Погуглил - узнал что надо подключать заголовок header('Access-Control-Allow-Origin: *');
Глупый вопрос - его в js надо подключать и если да, то куда?
Еще находил что-то про callback - можете дать информацию или показать как это реализовать?

Vlasenko Fedor 21.01.2014 23:27

Цитата:

Сообщение от Davert Tanz
Poznakomlus, как вариант будет в копилке, спасибо

Мой вариант хороший.
Ошибка у вас потому как не правильно указываете путь к файлу
$('div#text').load('http://yousite.com/text/'+indx+'.txt');

krasovsky 22.01.2014 09:06

Привет!
Цитата:

event.returnValue is deprecated. Please use the standard event.preventDefault() instead.
Вот это - не ошибка, а предупреждение о том что конструкция типо event.returnValue более не прокатит и надо использовать event.preventDefault(). Она падает в консоль независимо от того какой код вы пишите\исполняете. Вобщем просто инфа

Цитата:

Failed to load resource: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
А вот это действительно ошибка. Дело в том что по умолчанию, браузер из безопасности запрещает запросы по протоколу file - иначе получится ад - любой сайт может скачать что угодно с твоего компа.
Установи себе Openserver или Denwer (это локальные веб-сервера,проще всего openserver) и работай через них. Такой ошибки не будет. В любом случае если ты хочешь разрабатывать что то с использованием запросов - сервер необходимось.


Часовой пояс GMT +3, время: 07:13.