0

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

简而言之,有没有办法将锚标签与委托绑定,由于某些条件而删除锚标签。重新应用锚(通过包装),然后取回该绑定?

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

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”。

4

2 回答 2

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

于 2013-03-24T07:10:32.240 回答
1

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

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

jQuery(document).on('click', 'ul li a', function(event){
  // Check event here
  // Do something here
});
于 2013-03-24T07:11:11.217 回答