对通过Jquery添加的类做出反应

时间:2013-08-15 17:55:35

标签: jquery

我的网站上有一个菜单,当用户点击链接时会显示并隐藏。

通常情况下,我会为此进行切换。但是,我在页面上有其他菜单,因此需要在显示它时关闭它们(我也在应用/删除动画类)。所以我认为最好的方法是在链接中添加一个close类,然后对添加的类做出反应(因为其他菜单也有close类)。

但是,Jquery似乎对通过Jquery添加的类没有反应。我一直在寻找这个,发现你可以使用Live()来达到这个目的。但是,live()现已折旧,您应该使用On()代替。

使用On的方法如下:

$('.anchor').on('click', '.close', function()

但它似乎不起作用。我也试过这种变化,但它们似乎都没有用。

如何让Jquery对已添加的类做出反应。

JSFIDDLE Here

2 个答案:

答案 0 :(得分:2)

绑定点击事件以记录.close点击上的课程.anchor,反之亦然。

$(document).on('click','.anchor', function() {
  $(this).removeClass('anchor');
  $(this).addClass('close');
  // ...

$(document).on('click', '.close', function()    {
  $(this).removeClass('close');
  $(this).addClass('anchor');
  // ...

注意:最好将HTML包装在某个div中,并将事件绑定到该div,而不是将其绑定到整个文档。

http://jsfiddle.net/Mq5xX/

<强>更新

甚至可以更好地更改.anchor的密切链接上的课程并使用此代码。

$(document).on('click','.anchor', function() {
  $('.anchor').addClass('close');
  $('.anchor').removeClass('anchor');
  // ...

$(document).on('click','.close', function() {
  $('.close').addClass('anchor');
  $('.close').removeClass('close');
  // ...

http://jsfiddle.net/Mq5xX/1/

答案 1 :(得分:0)

我认为您的问题是您的“关闭”链接未包含在具有“锚”类的元素中。因此,jQuery会查找它,但找不到该元素,也无法将click事件绑定到它。

如果您使用$('.close').on('click', function () { ... });,它确实有用。

<强> Updated fiddle