Как я могу сказать jquery не возвращать true в функции, если у href есть определенный класс? - PullRequest
0 голосов
/ 23 июня 2011

Я использую плагин Wordpress для всех для асинхронной загрузки контента, но я не могу использовать плагин Lightbox, так как после нажатия на изображение страница перезагружается;Я хотел бы переопределить функцию, если a href имеет определенный класс

$('a').live( 'click',
        function() {
            if ( $(this).attr('target') )  {
                return true;
            }
            var href = $(this).attr('href');
            $.bbq.pushState({ url: href });
            if ( href.indexOf('#') == 0 ) {
                return true;
            }
            dispatcher.fire(href);
            return false;
        }
    );

Как мне изменить эту функцию, чтобы она возвращала false, если "a" - это изображение с определенным классом?

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Вы можете использовать метод hasClass , чтобы проверить, есть ли у элемента определенный класс.

Попробуйте это:

 $('a').live( 'click',      function() {
               //Check if the element has a class and if yes, return false.
        if($(this).hasClass("<YOUR_CLASS_NAME>")){
            return false;
        }
        else if ( $(this).attr('target') )  {
            return true;
        }
        var href = $(this).attr('href');
        $.bbq.pushState({ url: href });
        if ( href.indexOf('#') == 0 ) {
            return true;
        }
        dispatcher.fire(href);
        return false;
});
1 голос
/ 23 июня 2011
$('a').live( 'click', function( e ) { 
  e.preventDefault();
  if ( $(this).attr('target') ) { return true; } var href = $(this).attr('href'); $.bbq.pushState({ url: href }); if ( href.indexOf('#') == 0 ) { return true; } dispatcher.fire(href); return false; } );

Таким образом вы предотвращаете поведение ссылки по умолчанию. Если вам все еще нужно сделать это только для указанной ссылки на класс, просто добавьте оператор if

if ($(this).hasClass('myclass') {
  e.preventDefault();
}

Обратите внимание, что вы также можете использовать return false; вместо e.preventDefault().

...