【发布时间】:2012-03-02 14:49:15
【问题描述】:
我正在尝试在单击事件上添加和删除一个类,但没有结果。 我正在使用 jquery 1.4 开发 Drupal 7,书签链接是由标志模块生成的。
我会解释我需要做什么。 我有一段像这样的 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 吗?
非常感谢
【问题讨论】:
-
toggleClass() 适用于第一个操作,如果我再次单击它不起作用,因为单击链接后它将通过 AJAX 重建