javascript cloneNode()不';我不能正常工作
我在html页面中有一个id=“a”(例如)的select元素。 我有一个名为f()的函数。 当我写作时javascript cloneNode()不';我不能正常工作,javascript,jquery,html,clonenode,jquery-clone,Javascript,Jquery,Html,Clonenode,Jquery Clone,我在html页面中有一个id=“a”(例如)的select元素。 我有一个名为f()的函数。 当我写作时 $("#a").on("change",f); 它可以工作,这意味着每次我更改下拉列表中的选定值时,都会调用函数f() 我想在页面的另一个位置克隆此选择。 我有以下代码: var oldSelect=$("#a") var newSelect=oldSelect[0].cloneNode(true); newSelect.id="b"; $("#b").on("change",f); 当
$("#a").on("change",f);
它可以工作,这意味着每次我更改下拉列表中的选定值时,都会调用函数f()
我想在页面的另一个位置克隆此选择。
我有以下代码:
var oldSelect=$("#a")
var newSelect=oldSelect[0].cloneNode(true);
newSelect.id="b";
$("#b").on("change",f);
当我在新下拉列表中更改所选值时,不会调用函数f()
我试着用chrome的devTools调试它,结果发现$(“#a”)有点像数组长度1,它首先有select本身。但是$(“#b”)没有包含select本身的“0”属性
有人知道为什么会这样吗?如何克隆一个select元素及其所有选项和回调?虽然您克隆了现有的
#a
,但尚未将其插入到文档中显示的代码中,因此$(“#b”)
不会返回任何元素。在使用$
选择它之前插入它,例如:
$(container).append(newSelect);
$("#b").on("change",f);
其中,容器
是要将新的
附加到的元素
或者直接将侦听器添加到元素中,而不是再次选择它:
var newSelect=oldSelect.clone(true);
newSelect
.prop('id', 'b')
.on("change",f)
.appendTo(container);
(注意,在上面,newSelect
是一个jQuery集合,而不是一个htmlselect元素。)
const f=()=>console.log('change');
var oldSelect=$(“#a”);
oldSelect.on(“更改”,f);
var newSelect=oldSelect.clone(true);
新闻选择
.prop('id','b'))
.on(“更改”,f)
.appendTo(“#container”)代码>
方案A
方案B
虽然您克隆了现有的#a
,但还没有将其插入到文档中显示的代码中,因此$(“#b”)
不会返回任何元素。在使用$
选择它之前插入它,例如:
$(container).append(newSelect);
$("#b").on("change",f);
其中,容器
是要将新的
附加到的元素
或者直接将侦听器添加到元素中,而不是再次选择它:
var newSelect=oldSelect.clone(true);
newSelect
.prop('id', 'b')
.on("change",f)
.appendTo(container);
(注意,在上面,newSelect
是一个jQuery集合,而不是一个htmlselect元素。)
const f=()=>console.log('change');
var oldSelect=$(“#a”);
oldSelect.on(“更改”,f);
var newSelect=oldSelect.clone(true);
新闻选择
.prop('id','b'))
.on(“更改”,f)
.appendTo(“#container”)代码>
方案A
方案B
你能试试这个吗var newSelect=$(“#a”).clone(true)你能试试这个吗var newSelect=$(“#a”).clone(true)代码>如果我没有容器的id该怎么办?这是一个td(在一个表中),我想把select放在里面。表中的行是动态添加的,所以我不想给它们一个ID。您不需要ID,只需要选择要附加到的父级。任何有效的CSS选择器都可以,元素或jQuery集合中对
的引用也可以。谢谢!在将其插入文档后移动on()的建议有效!!如果我没有容器的id怎么办?这是一个td(在一个表中),我想把select放在里面。表中的行是动态添加的,所以我不想给它们一个ID。您不需要ID,只需要选择要附加到的父级。任何有效的CSS选择器都可以,元素或jQuery集合中对
的引用也可以。谢谢!在将其插入文档后移动on()的建议有效!!