Javascript 如何在jquery选择的更改事件上遍历dom树
我使用jQuerySelected进行选择,我需要在更改时更改一些字段。这是我的更改代码,可以使用:Javascript 如何在jquery选择的更改事件上遍历dom树,javascript,jquery,jquery-chosen,Javascript,Jquery,Jquery Chosen,我使用jQuerySelected进行选择,我需要在更改时更改一些字段。这是我的更改代码,可以使用: j(".address").chosen().change(function(evt, value) { console.log(evt); address_id = value.selected; }); 如果我将evt变量记录到控制台,我可以看到它有一个名为currentTarget的属性,该属性似乎指向已隐藏的原始select元素。如果我这样做: evt.currentT
j(".address").chosen().change(function(evt, value) {
console.log(evt);
address_id = value.selected;
});
如果我将evt变量记录到控制台,我可以看到它有一个名为currentTarget的属性,该属性似乎指向已隐藏的原始select元素。如果我这样做:
evt.currentTarget.remove();
evt.currentTarget.parents('.form-group').remove();
Uncaught TypeError: undefined is not a function
正如我所期望的那样,这将从DOM中删除select,从而显示该对象确实与select框相关。因此,如果我尝试遍历DOM,而不是使用该对象作为起点,我只会得到错误。例如,如果我执行以下操作:
evt.currentTarget.remove();
evt.currentTarget.parents('.form-group').remove();
Uncaught TypeError: undefined is not a function
它只是出现了以下错误:
evt.currentTarget.remove();
evt.currentTarget.parents('.form-group').remove();
Uncaught TypeError: undefined is not a function
理想情况下,我想这样做:
evt.currentTarget.parents('.form-group').next('.form-group').find('.address').val("some data")
请不要建议只使用ID,因为这对我试图构建的内容不起作用。我想要一个通用解决方案,即使在同一页面上有多个实例,它也能与类一起工作。
evt.currentTarget
是一个节点,它没有与jQuery元素相同的API,但有一个删除方法
在jQuery中封装它,就像在您的情况下jQuery似乎是j一样。您不能从不存在的元素进行遍历。您正在删除currentTarget
之后将如何定义它。如果您必须删除它,请在使用完之后再删除。抱歉,我认为您误解了,我并不是真的要删除它,我只是用它作为一个例子来说明使用remove()函数可以工作,因此对象显然与正确的元素相关。啊,这样做更有意义:)但我认为evt.currentTarget
不是一个jQuery对象,而是一个节点对象,它也有remove
方法,但不会有父对象,因为它只是jQuery。试试$(evt.currentTarget)
。是的,这很有效,谢谢:-)我可以在4分钟内接受你的答案