-1

而不是做

$("#IsOutdoors").click(function () {
    SendData();
});

$("#HasPatio").click(function () {
    SendData();
});

如果我想做多个 .click 事件,有没有更好的方法?谢谢!

4

4 回答 4

3

只需在一个字符串中使用所有选择器,并用逗号分隔它们:

$("#IsOutdoors, #HasPatio").click(function () {
    SendData();
});

对于更简洁的版本,您可以将SendData函数本身传递给click

$("#IsOutdoors, #HasPatio").click( SendData );

但请注意,这将改变this.SendData

于 2013-01-19T23:45:16.587 回答
2
$("#IsOutdoors,#HasPatio").click(SendData);
于 2013-01-19T23:45:25.703 回答
1

有很多方法:

  • 组合选择器
    就像在 CSS 中所做的那样,使用逗号来定位多个选择器:
    $("#IsOutdoors, #HasPatio").click(SendData);
  • 添加到 jQuery 集合
    您可以使用$.add(). 由于各个选择是内部快捷方式,getElementById()而不是使用 fullquerySelectorAll()或 Sizzle,因此这可能更有效。
    $("#IsOutdoors").add("#HasPatio").click(SendData);
  • 为元素添加一个公共类
    这并不是一个真正的脚本解决方案,但如果元素在逻辑上相似,那么一个类可能是合适的。
    $(".someClass").click(SendData);
于 2013-01-19T23:51:51.333 回答
1

这取决于你所说的更好。你想要更少的代码但同样的结果吗?你可以做类似的事情

$("#IsOutdoors, #HasPatio").click(SendData);

如果您希望减少单击处理程序的数量,例如,如果您有多个 DOM 元素都具有相同的单击处理程序,则可以改为将事件处理程序放在父元素上。然后,您可以列出应该将此事件委托给的元素的所有 ID,或者为它们提供一个通用类,例如clickable. 假设您的 HTML 如下所示:

<div id='someParent'>
  <div id='IsOutdoors' class='clickable'></div>
  <div id='HasPatio' class='clickable'></div>
</div>

您可以将点击处理程序简化为

$("#someParent").on('click', '.clickable", SendData);

或者如果您不想像我建议的那样添加课程

$("#someParent").on('click', '#IsOutdoors #HasPatio", SendData);
于 2013-01-19T23:52:13.623 回答