在将jQuery/javascript事件附加到元素时,应该如何验证页面DOM?

在将jQuery/javascript事件附加到元素时,应该如何验证页面DOM?,javascript,jquery,dom,javascript-events,Javascript,Jquery,Dom,Javascript Events,我正在使用jQuery向DOM元素添加事件。在我这样做的时候,我经常使用选择器,从技术上讲,选择器可以收集匹配项的列表,而不仅仅是单个项。e、 g.使用.children()和.find()方法,我可以找到0个、1个或多个匹配的DOM元素 我是否只需要在附加事件时检查每个元素上的.size()==1,或者是否有更简单的方法来执行此操作,例如,如果预期数字不等于大小,则具有预期匹配列的选择器将失败 考虑到我也输出了HTML并且应该知道正确的答案,我想这似乎很愚蠢,但是我有很多DOM操作正在进行,我

我正在使用jQuery向DOM元素添加事件。在我这样做的时候,我经常使用选择器,从技术上讲,选择器可以收集匹配项的列表,而不仅仅是单个项。e、 g.使用
.children()
.find()
方法,我可以找到0个、1个或多个匹配的DOM元素

我是否只需要在附加事件时检查每个元素上的
.size()==1
,或者是否有更简单的方法来执行此操作,例如,如果预期数字不等于大小,则具有预期匹配列的选择器将失败


考虑到我也输出了HTML并且应该知道正确的答案,我想这似乎很愚蠢,但是我有很多DOM操作正在进行,我想知道是否内置了任何类型的健全性检查机制。

您不需要检查它们。只需使用该方法并对其调用bind。如果它返回一个或多个元素,则所有元素都将具有事件绑定。如果它不返回任何元素,也不会抛出任何错误。

您可以将选择放入局部变量,然后测试大小:

var items = $(".items");

if (items.length == 1) {
    // Do you regular stuff here
} else if (items.length > 1) {
    // Log error to the console
    // Example: console.log('Too Many Items!!'); <- with firebug ofcourse
} else {
    // console.log("Too Few Items");
}

我认为你应该设计适合你需要的选择器。如果目标是选择一个元素-使用id选择器或返回一个元素或零$(“#”)的选择器。单击(函数回调),如果需要更多-使用其他选择器


无论如何,当您以jQuery方式$(“”)附加事件时。单击(或其他事件)可以声明符合选择器条件的所有元素都已订阅该事件。

大多数情况下,您可以立即应用函数: $(“…).someting()

您也可以尝试: $(“..”)。每个(函数(){ $(这个);
});

您可以编写一个简单的扩展方法来做您想做的事情,如下所示:

jQuery.fn.ifCount = function(count) {
  return this.length === count ? this : $();
};
然后,每次在代码中而不是在
if
中,您可以在链中调用它,例如:

$("div").ifCount(2).css({ color: 'red' });
如果计数为2,则集合将继续进行,并在元素上运行
.css()。如果计数不是2,则返回一个新的空集,因此
.css()
不运行任何内容


如果只想绑定任意数量的元素,而不关心有多少个元素,则无需进行任何检查,只需执行以下操作:

$("div").click(function() { .... });

如果有0个、1个或400个
元素,这就行了,这无关紧要。jQuery的默认行为是只使用匹配的元素继续链…如果链中有0个元素,则链中的函数只对任何元素执行,但不会抛出错误。这也不是特定于事件处理程序的,它适用于任何jQuery代码(以及正确编写的插件)。

如果您需要一个元素,但得到两个元素,那么代码的行为是否应该有所不同?或者您只是想附加到其中一个元素上?理论上,应该只有一个匹配项,但是如果页面DOM被我的其他代码中的错误搞砸了,我希望避免将事件附加到元素集合上——在这种情况下,从javascript的角度看,我更喜欢一个不起作用的页面。
$("div").click(function() { .... });