Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Jquery最佳实践,在附加事件之前检查按钮/链接是否存在_Jquery - Fatal编程技术网

Jquery最佳实践,在附加事件之前检查按钮/链接是否存在

Jquery最佳实践,在附加事件之前检查按钮/链接是否存在,jquery,Jquery,我有一个带有按钮和链接的网页,这些按钮和链接可能存在,也可能不存在。 我有一个jQuery,它运行并为这些按钮和链接分配click事件 在我尝试附加单击或任何其他事件之前,不检查按钮或链接的存在是否是一种不良做法?后果如何 如果我应该检查按钮和链接是否存在,那么什么技术是最佳实践? 像这样检查长度-$('myButton')。长度!=0或其他方式?完全不需要提前检查,除非您需要在不存在的情况下执行其他操作 让我们假设您可能有一个带有id值“myButton”的按钮,也可能没有。如果您这样做: $

我有一个带有按钮和链接的网页,这些按钮和链接可能存在,也可能不存在。 我有一个jQuery,它运行并为这些按钮和链接分配
click
事件

在我尝试附加
单击
或任何其他事件之前,不检查按钮或链接的存在是否是一种不良做法?后果如何

如果我应该检查按钮和链接是否存在,那么什么技术是最佳实践?
像这样检查长度-
$('myButton')。长度!=0
或其他方式?

完全不需要提前检查,除非您需要在不存在的情况下执行其他操作

让我们假设您可能有一个带有
id
“myButton”
的按钮,也可能没有。如果您这样做:

$("#myButton").click(function() { /* ..... */ });
…而且按钮不存在,没有连接处理程序。这实际上是禁止的

另一种方法是:

var btn = $("#myButton");
if (btn.length !== 0) {
    btn.click(function() { /* ... */ });
}
…这不会为您节省任何东西(您仍然需要在DOM中查找),但会涉及更多代码


这是jQuery“集合论”方法的一大优点:如果集合是空的,那么集合上的操作不会失败,它们什么都不做。

除非你需要做一些不同的事情,否则绝对不需要提前检查

让我们假设您可能有一个带有
id
“myButton”
的按钮,也可能没有。如果您这样做:

$("#myButton").click(function() { /* ..... */ });
…而且按钮不存在,没有连接处理程序。这实际上是禁止的

另一种方法是:

var btn = $("#myButton");
if (btn.length !== 0) {
    btn.click(function() { /* ... */ });
}
…这不会为您节省任何东西(您仍然需要在DOM中查找),但会涉及更多代码


这是jQuery“集合论”方法的一大优点:如果集合是空的,那么对集合的操作不会失败,它们什么也不做。

对不包含元素的jQuery对象调用jQuery函数不会产生任何影响,因为jQuery已经隐式地为您处理了这一点。本质上,它依次迭代每个匹配的元素,并尝试迭代初始化但为空的集合,只会导致不执行任何操作。

对不包含元素的jQuery对象调用jQuery函数不会产生任何影响,因为jQuery已经隐式地为您处理了这个问题。它基本上依次迭代每个匹配的元素,并尝试迭代初始化但为空的集合,只会导致不执行任何操作。

无需检查按钮是否存在。
如果“#myButton”不存在,$(“#myButton”)。单击(…)不会附加任何内容,这是一种不错的做法。

无需检查按钮是否存在。 如果“#myButton”不存在,$('#myButton')。单击(…)不会附加任何内容,这是一种不错的做法。

$('myButton')
是通过DOM进行搜索。定义不当的搜索条件和过重的DOM可能会导致昂贵的搜索操作

一些开发人员忘记了这一点,对同一个搜索查询执行多个操作,例如

if ($('myButton').length !== 0) {
    $('myButton').click(...);    
}
如果
$('mybutton')
返回一个或多个结果,则上面的搜索将运行两次

您当然可以对此进行“优化”以

但是,通过注意jquery将愉快地接受空集上的操作,这一点可以得到更大的改进:

$('myButton').click(...);
jquery足够聪明,可以运行搜索,注意它返回了空集,然后忽略
。单击()

简而言之,不需要首先检查按钮是否存在。

$('myButton')
是通过DOM进行的搜索。定义不当的搜索条件和过重的DOM可能会导致昂贵的搜索操作

一些开发人员忘记了这一点,对同一个搜索查询执行多个操作,例如

if ($('myButton').length !== 0) {
    $('myButton').click(...);    
}
如果
$('mybutton')
返回一个或多个结果,则上面的搜索将运行两次

您当然可以对此进行“优化”以

但是,通过注意jquery将愉快地接受空集上的操作,这一点可以得到更大的改进:

$('myButton').click(...);
jquery足够聪明,可以运行搜索,注意它返回了空集,然后忽略
。单击()


简而言之,没有必要先检查按钮是否存在。

jQuery已经为您做了这件事,您不必检查jQuery已经为您做了这件事,您不必检查这可能不是问题的答案,而且不相关,因为您可以一次性执行选择并将结果jQuery对象存储在变量中。@AnthonyGrist-感谢您的评论,我已经更新了我的答案。这可能不是问题的答案,由于您可以一次性执行选择并将结果jQuery对象存储在变量中,因此不相关。@AnthonyGrist-感谢您的评论,我已经更新了我的答案。
$('.parentthatdoesist')。on('click,'myButton',function(){})
将处理以后添加按钮时的单击操作。如果您有多个按钮,它的效率也会更高。
$('.parentThatDoesExist')。on('click,'myButton',function(){})
将处理稍后添加按钮时的单击操作。如果你有多个按钮,它的效率也会更高。