Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   jquery - как отключить аякс на ссылке? (https://forum.antichat.xyz/showthread.php?t=79446)

Дикс 02.08.2008 18:36

jquery - как отключить аякс на ссылке?
 
повесил на все ссылки аякс
PHP код:

$(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

Цитата:

Сообщение от Дикс
повесил на все ссылки аякс
PHP код:

$(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>


Время: 10:07