jQuery .live和.delegate()addClass和removeClass动态问题

时间:2012-03-02 14:49:16

标签: jquery drupal-7

我正在尝试在没有结果的点击事件中添加和删除类。 我正在使用jquery 1.4处理Drupal 7,书签链接由flag模块生成。

我将解释我需要做什么。 我有一个像这样的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');}
});

这适用于第一种,它不像“切换”那样工作。

我尝试使用.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 个答案:

答案 0 :(得分:2)

怎么样

$('a.flag').click(function()
{
    $(this).parent().toggleClass('this-bookmarked');
    return false;
});