jquery - как отключить аякс на ссылке?

Discussion in 'PHP' started by Дикс, 2 Aug 2008.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    повесил на все ссылки аякс
    PHP:
    $(document).ready(function(){
    $(
    "a").click(function(){
        $(
    '#data').load(this.href);
        return 
    false;
    });
    });
    хочу сделать так, чтобы можно было отключать его для некоторых ссылок.
    не лучший способ- добавлять к ним атрибут ajax=no,
    т.к. это не валид хтмл
    тем не менее не получается и это.

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

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

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Самый простой вариант, это присваивать ссылкам ( те что не должны обрабатываться аяксом) определенный класс, благо их можно даже несколько прицепить

    А в самой функц ии обработки онклика, проверять this(элемент вызвавший данное событие) не являеться ли он принадлежащем классу, при котором НЕ нужно обрабатываь событие
     
    #2 Naydav, 3 Aug 2008
    Last edited: 3 Aug 2008
  3. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    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(), щёлкаю по одной ссылке и алерт вылазит один раз.
    потом щёлкаю по другой.
    потом снова по первой и алерт вылазит до шести раз.
    причем он то пишет содержимое функции клик - тело какой-то функции, наверное из джиквери, то пустую строку =\
     
    #3 Дикс, 3 Aug 2008
    Last edited: 3 Aug 2008
  4. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Code:
    <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")
    Но через классы удобнее, причем классов можно и несколько назначать (в таком случае нужно несколько усложнить условие проверки)
     
    #4 Naydav, 3 Aug 2008
    Last edited: 3 Aug 2008
  5. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    я по всякому пробовал
    сделай рабочий пример? :)
     
  6. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Так вверху РАБОЧИЙ пример :)
    - не забудь указать свой путь

    Напиши в личку, если что не получается
     
    #6 Naydav, 3 Aug 2008
    Last edited: 3 Aug 2008
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    пример нерабочий :)
    проверял в опере 9.2
    первая ссылка - страница дёргаеццо в перезагрузке,
    вторая ссылка - ваще ничо не происходит
    если изменить вторую ссылку на #2 - урл меняется на #2 и всё

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

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    СКРИПТ РАБОЧИЙ!

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

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


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

     
    #8 Naydav, 3 Aug 2008
    Last edited: 4 Aug 2008