Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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始终引用起始DOM_Javascript_Jquery_Dom - Fatal编程技术网

Javascript Jquery始终引用起始DOM

Javascript Jquery始终引用起始DOM,javascript,jquery,dom,Javascript,Jquery,Dom,我试图理解由事件单击触发的函数在第一次执行后的执行方式 我认为更改我的身份证的功能将不再执行 jquery代码似乎继续引用原始DOM。为什么?在第一次执行之后,为了升级DOM对象,我可以做些什么 $(document).ready(function () { $("#select1").on('click',function(){ $(this).children().each(function () { globalObj[this.value] = thi

我试图理解由事件单击触发的函数在第一次执行后的执行方式

我认为更改我的身份证的功能将不再执行

jquery代码似乎继续引用原始DOM。为什么?在第一次执行之后,为了升级DOM对象,我可以做些什么

$(document).ready(function () {
    $("#select1").on('click',function(){
      $(this).children().each(function () {
        globalObj[this.value] = this.innerHTML;
    });
      $(this).attr("id","select2");
      });
 });
我认为更改我的身份证的功能将不再执行

否,因为一旦事件绑定到某个元素,它就被设置为该元素,更改哪些属性无关紧要。如果您希望只执行一个您可以使用的函数,或者停止您可以使用的函数的绑定

jquery代码似乎继续引用原始DOM


是的,因为jQuery是跨浏览器的,它使用
元素.addEventListener
元素.attachEvent
分配单击事件(取决于浏览器)。如果要删除事件,必须使用前面列出的解决方案之一,即使用
removeEventListener
detachEvent

将事件附加到DOM元素,而不是id,首先通过id获取元素
选择1
返回DOM对象,然后为该对象绑定click事件,如果您更改了id,但这并不意味着您创建了一个新对象,如果您想删除该事件,只需解除绑定即可

$(this).unbind('click')
//OR
$(this).off('click')
当然,让活动只进行一次

$("#select1").one('click',... // the function is "onE" not "on" 

“我认为更改函数的id将不再执行。”选择器仅用于最初查找元素。是@FelixK,我已删除该行:)我正在修改id以避免后续执行。在这种情况下,我可以简单地使用.one()。谢谢:)
.one()
如果你只需要一次就好了。但是,如果您确实希望重复调用处理程序,但仅当选择器与元素匹配时,您可以使用委托事件处理程序。