jQuery应该将具有类似事件的选择器分组为1选择器。

时间:2011-02-26 07:30:34

标签: jquery events click

我总是发现自己拥有多个选择器,在代码的许多区域都有点击事件。以这种方式完成它是否有任何不利之处。

例如:

$('#id').live('click'....)
$('div').live('click'....)
$('.class p').live('click'..)

或者最好将所有组合在一个选择器中,例如

$('#id, div, .class p')..

有时候我觉得很难将一个选择器组合在一起,因为我必须知道点击了哪个项目。并非所有项目都有id。有些人有id的一些类,有些只是普通的html标签。如果组合所有在一个选择器更好,我怎么能分辨哪个项目被点击。

3 个答案:

答案 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>'));
    });
});

示例:

http://jsfiddle.net/ArondeParon/db8K3/

答案 1 :(得分:1)

如果它们都具有相同的点击逻辑,我会组合它们的选择器以保持代码详细程度。如果您想告诉点击了哪个项目,可以访问活动的target propertytarget属性的粒度大于this引用的大小。

答案 2 :(得分:0)

您可以使用

$(this).attr('id')

找到被点击元素的ID。如果你做的事情大致相同,那么可以使用一个选择器,否则可能更清楚将它分开。