我总是发现自己拥有多个选择器,在代码的许多区域都有点击事件。以这种方式完成它是否有任何不利之处。
例如:
$('#id').live('click'....)
$('div').live('click'....)
$('.class p').live('click'..)
或者最好将所有组合在一个选择器中,例如
$('#id, div, .class p')..
有时候我觉得很难将一个选择器组合在一起,因为我必须知道点击了哪个项目。并非所有项目都有id。有些人有id的一些类,有些只是普通的html标签。如果组合所有在一个选择器更好,我怎么能分辨哪个项目被点击。
答案 0 :(得分:3)
如果您需要在点击事件期间区分项目 - 因此,每个点击元素的行为应该不同,您应为每个元素绑定一个事件 强>
如果元素可以组合在一起,因为它们共享相同的行为,则实际上没有理由不对选择器进行分组。 < / p>
将click事件绑定到多个元素时,$(this)
始终引用单击的元素,如果您愿意,它允许您执行一些特定于元素的例程。例如:
<强> HTML:强>
<ul>
<li>Some item</li>
<li>Another one</li>
<li>And another one</li>
</ul>
<span>Wee</span>
<强> JavaScript的:强>
$(function() {
$('span, li').click(function() {
$(this).append($('<div>Child div added to clicked element</div>'));
});
});
示例:强>
答案 1 :(得分:1)
如果它们都具有相同的点击逻辑,我会组合它们的选择器以保持代码详细程度。如果您想告诉点击了哪个项目,可以访问活动的target
property。 target
属性的粒度大于this
引用的大小。
答案 2 :(得分:0)
您可以使用
$(this).attr('id')
找到被点击元素的ID。如果你做的事情大致相同,那么可以使用一个选择器,否则可能更清楚将它分开。