可以在删除之后保持绑定w /委托,然后重新创建元素

时间:2013-03-24 07:04:59

标签: jquery

我在UL中创建了LI下所有Anchor的绑定。 (我正在使用Delegate因为我在1.6 jQuery版本工作)。无论如何,出于某种原因我删除了一个文本锚点。然后在以后重新申请。

简而言之,有没有办法将Anchor标记与委托绑定,由于某些条件而删除锚标记。重新应用锚点(通过换行),然后恢复绑定?

我很清楚,我正在使用“委托” - 但是一旦打开锚标签,绑定就会丢失 - 即使我重新包装它。阿拉

jQuery(pc).delegate("li > a",'click', function(){
    showit(jQuery(this).closest('li').index());
    pc.find("li:not(:has(a))").wrap('<a href="#">'); <-- this is when I add it lateron
    jQuery(this).replaceWith(jQuery(this).text()); <-- this is when I remove it.
});

编辑:::也许这可以帮助将来的某个人。 DELEGATE确实按预期工作。如果您查看我的代码,您将看到我包装“LI”,而不是li中的文本。这就是为什么事件没有保留其约束力。当我用一个锚包装LI的文本,宾果 - 它工作。 我为偏离人们的时间而道歉。所以,解决方案是“wrapInner”,在这种情况下不是“wrap”。

2 个答案:

答案 0 :(得分:1)

你是说这样的意思吗?

   if(new Date().getTime() % 2 == 0) 
     {
        $("body").on('click','ul>li a', doWork);
     }
     else
    {
        $("body").off('click');
    }

     //...
     //...
     // later , ReBind the event ...    


function doWork()
{
        alert('mod2');
}

jsbin

答案 1 :(得分:1)

有关更多信息,请参阅jQuery on的“委托”区域: http://api.jquery.com/on/

如果您将绑定应用于文档,它应该处理您添加和删除锚点:

jQuery(document).on('click', 'ul li a', function(event){
  // Check event here
  // Do something here
});