Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
html中Javascript函数和jquery选择器的功能_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

html中Javascript函数和jquery选择器的功能

html中Javascript函数和jquery选择器的功能,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我有一个javascript函数: function clearDiv(div_id) { alert(div_id); $(div_id).empty(); } 以及以下html: <input value="Clear" type="button" onClick="clearDiv(div_to_clear)" /> <div id="div_to_clear"> <!-- more html --> </div>

我有一个javascript函数:

function clearDiv(div_id) {
    alert(div_id);
    $(div_id).empty();
}
以及以下html:

<input value="Clear" type="button" onClick="clearDiv(div_to_clear)" />

<div id="div_to_clear">
    <!-- more html -->
</div>
我需要将我的函数更改为

function clearDiv(div_id) {
    alert(div_id);
    $('#' + div_id).empty();
}

有关于这方面的文件吗?使用一种方法或另一种方法有什么好处?

IE和Chrome为了实现兼容性,将在窗口上创建属性,其中包含与这些元素对应的ID元素名称

在第一个示例中,我们将window.div_传递给_,以清除直接指向元素的元素。在第二个示例中,传递一个字符串,告诉jQuery选择哪个元素


第一个是非标准行为,因此您不应该依赖它。

IE和Chrome为了实现兼容性,将在窗口上创建属性,其中包含ID为的元素名称,对应于这些元素

在第一个示例中,我们将window.div_传递给_,以清除直接指向元素的元素。在第二个示例中,传递一个字符串,告诉jQuery选择哪个元素


第一个是非标准行为,因此您不应该依赖它。

第一个实际上是一个浏览器错误,他们称之为通过window访问DOM节点的功能。div_清除全局变量,jQuery将围绕元素创建其包装器。由于传统原因,它仍然存在于当前浏览器中,但已被弃用。您真的应该使用选择器解决方案。

第一个问题实际上是一个浏览器错误,他们称之为通过window.div访问DOM节点的功能。div\u清除全局变量,jQuery将围绕元素创建其包装器。由于传统原因,它仍然存在于当前浏览器中,但已被弃用。您真的应该使用选择器解决方案。

这是因为浏览器有一种广泛实施但不是最佳实践的方法,可以自动将id为的html元素放入其相关变量名中。例如:

<div id="someId"></div>
最终将创建保存该html元素的变量someId

这些问题具有类似的行为信息:


下面是一个jsperformance测试,它显示以这种方式访问id要比使用document.getElementById:

慢。这是因为浏览器有一种广泛实现但不是最佳实践的方法,可以自动将id为的html元素放入其相关变量名中。例如:

<div id="someId"></div>
最终将创建保存该html元素的变量someId

这些问题具有类似的行为信息:


下面是一个jsperformance测试,它显示以这种方式访问id比使用document.getElementById慢:

我无法重现您描述的行为。你确定div_id没有被全局设置在其他地方吗?@j08691我无法重现你描述的行为。你确定div_id没有被全局设置在其他地方吗?@j08691因为我现在没有安装firefox,第一个方法会将div_to_clear作为字符串传递给我的js函数吗?@SotiriosDelimanolis No.如前所述,未加引号的字符串被视为变量。我实际上刚刚在firefox中尝试过,它可以工作,这对我来说是新鲜事。尽管如此,我还是不相信它。如果没有引号,它就不是一个字符串。因为我现在没有安装firefox,第一个方法会将div_to_clear作为字符串传递给我的js函数吗?@SotiriosDelimanolis否。如前所述,没有引号的字符串被视为一个变量。我实际上刚刚在firefox中尝试过,它可以工作,这对我来说是新的。尽管如此,我还是不相信它。如果它没有被引用,它就不是一个字符串。