Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果jQuery在选择器中找不到元素,它会抱怨/抛出错误吗?_Javascript_Jquery - Fatal编程技术网

Javascript 如果jQuery在选择器中找不到元素,它会抱怨/抛出错误吗?

Javascript 如果jQuery在选择器中找不到元素,它会抱怨/抛出错误吗?,javascript,jquery,Javascript,Jquery,我有点困惑,假设我做了各种选择,包括单选和多选: $('#button1').off('handler').on('handler') $('input[id*="my_button"]').each(function() { 但是在我的HTML中没有ID为button1 Ex.1的元素,也没有my_button Ex.2的任何子字符串 如果找不到任何元素,会不会出现JS错误,或者代码不会自动执行 我都看过了,如果没有匹配的元素,我想静默处理/跳过。不,它不会出错。它将返回一个空的结果集。对其

我有点困惑,假设我做了各种选择,包括单选和多选:

$('#button1').off('handler').on('handler')
$('input[id*="my_button"]').each(function() {
但是在我的HTML中没有ID为button1 Ex.1的元素,也没有my_button Ex.2的任何子字符串

如果找不到任何元素,会不会出现JS错误,或者代码不会自动执行


我都看过了,如果没有匹配的元素,我想静默处理/跳过。

不,它不会出错。它将返回一个空的结果集。对其尝试的任何操作都将被忽略。

单个选择器和多个选择器之间没有区别。就jQuery而言,它可能是一组空的元素

例如,.on和.off将在组中的每个元素上应用/删除事件处理程序。如果该组恰好为空,则什么也不会发生

在某些方面,这是一件好事——它消除了手动检查的需要。然而,我倾向于将其视为一个问题。假设我写:

document.getElementById('button1').addEventListener(...);
但页面上不存在按钮1。我得到一个错误,告诉我这种类型的-无法获取未定义或空引用的属性'addEventListener'不是很明显,但是您可以学习理解它,我可以通过修复缺少所需元素,或者添加一个检查来显式地说如果没有这样的元素就可以了


然而,在jQuery中,您没有这样的选择。你的选择器有错吗?空集合处理得很好,事件神秘地消失了。我个人认为这是一件坏事,但是jQuery没有办法知道您是否打算为零、一个或数百个元素匹配……/p>为什么不尝试一下,或者阅读文档,您会发现jQuery总是返回一个类似数组的对象。