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

标签 jquery events click

我总是发现自己在代码的许多区域都有带有点击事件的多个选择器。这样做有什么缺点吗?

例如:

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

还是将所有内容合并到一个选择器中更好,例如

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

有时我发现很难将所有内容组合到一个选择器上,因为我必须知道单击了哪一项。并非所有项目都有 id。有些有 id、有些类,有些只是普通的 html 标签。如果将所有内容合并到一个选择器中效果更好,我如何知道单击了哪个项目。

最佳答案

如果您需要在点击事件期间区分项目 - 因此,每个被点击元素的行为应该不同,您应该为每个元素绑定(bind)一个事件>.

如果元素可以分组在一起,因为它们具有相同的行为,那么确实没有理由不对选择器进行分组。

将点击事件绑定(bind)到多个元素时,$(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/

关于jQuery 应该将具有类似事件的选择器分组为 1 个选择器。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5125669/

相关文章:

jQuery:根据窗口滚动位置固定到页面顶部后动画容器宽度

javascript - 字符串中每个单词的首字母和标点符号

java - 如何为多个复选框创建一个 Action 事件?

java - 获取当月事件时出现 NullPointerException

Android : If markers are overlapping each other on the map, 然后触发最后一个隐藏的点击事件

javascript - 如何将列表存储到cookie中并在另一个页面中查看?

javascript - 将类添加到最短元素

java - 如何在 android 中处理 "record"和 "replay"触摸事件?

android - 将图像的特定部分制作成 Android 应用程序的可点击按钮

javascript - 如何使用 jQuery 模拟 vclick?