Javascript 将函数重新绑定到克隆元素

Javascript 将函数重新绑定到克隆元素,javascript,dom,jquery,Javascript,Dom,Jquery,在使用AJAX和某些其他jQuery函数(如“绑定”和“克隆”)编写“添加到收藏夹”函数时,出现了一个问题。我将首先解释功能: 我有两个内容领域: 产品列表-包含所有产品(产品标题、图片及其“添加到收藏夹”-功能) 收藏夹-包含标记为收藏夹的所有产品(元素具有与产品相同的html结构) 将产品添加到收藏夹时,我以编程方式将“添加到收藏夹”按钮更改为“从收藏夹中删除”按钮。此外,我将整个产品(包括“从收藏夹中删除”按钮)克隆到“收藏夹”区域 现在,如果我切换到“收藏夹”区域并尝试删除喜欢的产品,它

在使用AJAX和某些其他jQuery函数(如“绑定”和“克隆”)编写“添加到收藏夹”函数时,出现了一个问题。我将首先解释功能:

我有两个内容领域:

  • 产品列表-包含所有产品(产品标题、图片及其“添加到收藏夹”-功能)
  • 收藏夹-包含标记为收藏夹的所有产品(元素具有与产品相同的html结构)
  • 将产品添加到收藏夹时,我以编程方式将“添加到收藏夹”按钮更改为“从收藏夹中删除”按钮。此外,我将整个产品(包括“从收藏夹中删除”按钮)克隆到“收藏夹”区域

    现在,如果我切换到“收藏夹”区域并尝试删除喜欢的产品,它就不起作用了。如果我随后刷新页面,删除操作将非常有效

    我认为,这与刷新DOM结构或重新绑定函数或类似的内容有关。。 我很高兴能在这个问题上得到任何帮助或解释

    以下是我的代码(脚本位于页面末尾):

    .clone([withDataAndEvents][,deepWithDataAndEvents])

    通常,绑定到原始元素的任何事件处理程序都不会复制到克隆中。可选的withDataAndEvents参数允许我们更改此行为,并创建所有事件处理程序的副本,绑定到元素的新副本。从jQuery 1.4开始,所有元素数据(通过.data()方法附加)也会复制到新副本中

    从jQuery 1.5开始,withDataAndEvents可以选择使用deepWithDataAndEvents进行增强,以复制克隆元素的所有子元素的事件和数据

    比如说

    $JQuery(this)
      .parent()
      .parent()
      .parent()
      .clone(true, true) /* with withDataAndEvents and deepWithDataAndEvents  */
      .appendTo('.katoverview_media_fav');
    
    也许是你需要的

    否则,请使用(或最好用于jQuery 1.7+)而不是.bind()


    clone
    接受两个可能有用的参数。请查看(这应该是您的第一步)。不,这将创建错误的功能。。虽然使用.live()对我来说很有用。谢谢你的推荐。使用上面的代码(“.clone(true,true)”),复制绑定的函数,这会创建错误的功能。当我点击喜欢的产品试图删除它,它再次克隆。。。它应该解除第二个“bind”函数的绑定,然后重新绑定它。。现在我将尝试使用live()函数。
    $JQuery(this)
      .parent()
      .parent()
      .parent()
      .clone(true, true) /* with withDataAndEvents and deepWithDataAndEvents  */
      .appendTo('.katoverview_media_fav');
    
    $('.katoverview_media_fav .prod_action_favorit').live("click", function(){
       ...
    });