2017-04-20 79 views
0
<ul> 
<li> 
<a href='javascript:;' class='close'>close</a> 
<a>openId</a> 
</li> 
</ul> 

我想在点击a.close时删除li元素。li是生成动态的,这意味着每次生成新的li时,我都会这样做。点击鼠标不能正常工作

$("a.close").unbind("click").click(function(){ 
    console.log("close click"); 
}) 

然而,预期它不工作,当我在Chrome的控制台类型$("a.close").click(),其打印“亲密单击”不如预期,但是当我点击鼠标的a。关闭区域,它没有显示任何东西,这意味着事件没有触发。

js的点击功能和mouce点击之间的区别是什么?

+0

你们是不是要触发或结合的Click事件? – Darlesson

+1

您的代码在非静态环境中工作(https://jsfiddle.net/tj53zxx4/),这意味着问题出在您如何以及何时运行上面的'unbind()'/'click()'方法。无论如何,这是相当多余的,因为您可以通过在动态内容上使用委托事件处理程序来更有效地解决问题。关闭作为一个愚蠢。 –

回答

0

当你绑定任何event任何HTML元素它会正常工作......但一旦你从DOM删除元素并重新添加同一元素到您需要再次为新添加的元素绑定click事件DOM。所以它变得很难...而不是这个..你可以只需register点击事件(如下),那么不需要再次绑定事件...任何新添加的HTML元素也会得到相同的事件...

注意: -请注意,应该匹配的元素(本例中为a.close)在绑定时不需要存在(因此它也适用于动态添加的元素)。

你只需要注册,如下点击事件......

$('body').on("a.close","click",function(){ 
     alert('click event fired !') 
}); 
+0

为什么重视身体? – Charlie

+0

@teek - 请检查以上答案 – prog1011