jQuery .live и .delegate () addClass и removeClass динамически проблемы - PullRequest
1 голос
/ 02 марта 2012

Я пытаюсь добавить и удалить класс по событию щелчка без результатов.Я работаю над Drupal 7 с jquery 1.4, и ссылки закладок генерируются модулем флага.

Я объясню, что мне нужно сделать.У меня есть кусок HTML-кода, подобного следующему:

<div class="container"><a class="bookmark">Bookmark</a></div>
<div class="container"><a class="flag bookmark">Bookmark</a></div>

Теперь, когда вы нажимаете «Закладка», автоматически (по флагу модуля) классы ссылок меняются (он меняется через AJAX, и ссылкаперестроен)

<div class="container"><a class="flag bookmark">Bookmark</a></div>
<div class="container"><a class="flag bookmarked">Bookmarked</a></div>

То, что я хочу сделать, это дать класс для контейнера, поэтому я написал

$('.bookmarked').click(function(){
    $(this).parent().removeClass('this-bookmarked');}
});
$('.bookmark').click(function(){
    $(this).parent().addClass('this-bookmarked');}
});

Это работает на первом, он не работает как "toggle ".

Я пытался использовать .live (), но безрезультатно, он вообще не работает.

$("a.flag").live({
     click: function() {
         if ($(this).parent().hasClass("this-bookmarked")) {
             $(this).parent().removeClass('this-bookmarked');           
         } else {  
             $(this).parent().addClass('this-bookmarked');
         }

        return false;}
});

Я тоже пробовал

$("a.flag").live('click', function() {
    if ($(this).parent().hasClass("this-bookmarked")) {
        $(this).parent().removeClass('this-bookmarked');            
    } else {  
        $(this).parent().addClass('this-bookmarked');
    }

    return false;}
});

чтобы быть уверенным, что я тоже использовал .delegate ()

jQuery(function() {
    jQuery(document).delegate("a.flag", "click", function() {
        if (jQuery(this).hasClass("this-bookmarked")) {
            jQuery(this).parent().removeClass('this-bookmarked');           
        } else {  
            jQuery(this).parent().addClass('this-bookmarked');
        }
        return false;}
    );
});

И .live (), и .delegate () не дают мне никаких результатов и ошибок, даже если я хочупредупредить некоторый текст.Я делаю что-то неправильно?

Должен ли я использовать какой-нибудь другой jquery API?

Большое спасибо

1 Ответ

2 голосов
/ 02 марта 2012

Как насчет

$('a.flag').click(function()
{
    $(this).parent().toggleClass('this-bookmarked');
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...