PDA

Просмотр полной версии : jquery - как отключить аякс на ссылке?


Дикс
02.08.2008, 18:36
повесил на все ссылки аякс

$(document).ready(function(){
$("a").click(function(){
$('#data').load(this.href);
return false;
});
});


хочу сделать так, чтобы можно было отключать его для некоторых ссылок.
не лучший способ- добавлять к ним атрибут ajax=no,
т.к. это не валид хтмл
тем не менее не получается и это.

Здесь http://docs.jquery.com/Selectors
селекторы только для выделения элементов у которых атрибут не равен указанному свойству.
это не подходит. не могу же я везде приписывать атрибут ajax =\

помогите решить проблему

Naydav
03.08.2008, 03:31
повесил на все ссылки аякс

$(document).ready(function(){
$("a").click(function(){
$('#data').load(this.href);
return false;
});
});


хочу сделать так, чтобы можно было отключать его для некоторых ссылок.
не лучший способ- добавлять к ним атрибут ajax=no,
т.к. это не валид хтмл
тем не менее не получается и это.

Здесь http://docs.jquery.com/Selectors
селекторы только для выделения элементов у которых атрибут не равен указанному свойству.
это не подходит. не могу же я везде приписывать атрибут ajax =\

помогите решить проблему

Самый простой вариант, это присваивать ссылкам ( те что не должны обрабатываться аяксом) определенный класс, благо их можно даже несколько прицепить

А в самой функц ии обработки онклика, проверять this(элемент вызвавший данное событие) не являеться ли он принадлежащем классу, при котором НЕ нужно обрабатываь событие

Дикс
03.08.2008, 09:53
if($(this).css(class) != 'noAjax')
if(this.css(class) != 'noAjax')
if(this.attr(class) != 'noAjax')
if(this.attr("class") != 'noAjax')
не работает =\
может потому что у большинства ссылок вообще класса нет?

попробовал сделать так:
if(this.title != 'Внешняя ссылка ->')
$('#data').load(this.href);

ссылка ваще не работает

и ещё у меня почему-то многократно вызывается click(function())
после того как я дважды перейду по таким ссылкам

т.е. я ставлю алерт(click()) в вызов click(), щёлкаю по одной ссылке и алерт вылазит один раз.
потом щёлкаю по другой.
потом снова по первой и алерт вылазит до шести раз.
причем он то пишет содержимое функции клик - тело какой-то функции, наверное из джиквери, то пустую строку =\

Naydav
03.08.2008, 13:14
<script type="text/javascript" src="/javascripts/jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){

$("a").click(function(){
//$('#data').load(this.href);

if( $(this).attr("class")!="noajax" )
alert("Ajax");
return false;
});

});
</script>

<a href="#">Событие сработает</a> |
<a href="#" class="noajax">Событие НЕ сработает</a>

Если хочешь через title, то попробуй не this.attr("title"), а $(this).attr("title")
Но через классы удобнее, причем классов можно и несколько назначать (в таком случае нужно несколько усложнить условие проверки)

Дикс
03.08.2008, 16:29
я по всякому пробовал
сделай рабочий пример? :)

Naydav
03.08.2008, 19:52
я по всякому пробовал
сделай рабочий пример? :)
Так вверху РАБОЧИЙ пример :)
<script type="text/javascript" src="/javascripts/jquery.js"></script> - не забудь указать свой путь

Напиши в личку, если что не получается

Дикс
03.08.2008, 21:45
пример нерабочий :)
проверял в опере 9.2
первая ссылка - страница дёргаеццо в перезагрузке,
вторая ссылка - ваще ничо не происходит
если изменить вторую ссылку на #2 - урл меняется на #2 и всё

сорри, разбираться некогда - ща спать завалюсь

Naydav
03.08.2008, 23:09
пример нерабочий :)
проверял в опере 9.2
первая ссылка - страница дёргаеццо в перезагрузке,
вторая ссылка - ваще ничо не происходит
если изменить вторую ссылку на #2 - урл меняется на #2 и всё

сорри, разбираться некогда - ща спать завалюсь
СКРИПТ РАБОЧИЙ!

Отестировал еще раз во всех браузерах (в том числе и опера 9.50) - все отлично работает, я выложу в инет, сам посмотришь
___________________
http://edukation.com.ua/my.php

не веришь мне, дай ссылку другим
код тот же, в сурсе - посмотришь


---- вот код вообще уже и c подгрузкой

<script type="text/javascript" src="/javascripts/jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){

$("a").click(function(){

if( $(this).attr("class")!="noajax" ){
alert("Аякс");
$('#data').load($(this).attr("href"));
}
else {
alert("Класс noajax, ничего не происходит");
}

return false;
});

});
</script>

<a href="/test.php">Аяксом загружаем страницу</a> | <a href="#" class="noajax">Событие НЕ сработает</a>
<div id="data"></div>