附加选择的 Change() 不起作用
我对选择元素的更改有 jQuery 函数:
$("#category").change(function(){
$("table[id=advance_search]").append("<tr id='item_type'></tr>");
$("tr[id=item_type]").append("<td class='field_input'><select id='type'><option value='1'>One<option><option value='2'>Two<option></select></td>");
});
$("tr[id=item_type]").children(".field_input").delegate("select[id=type]", "change", function() {
console.log("change");
});
当我更改 select#type
上的值时,字符串“change”不会显示在控制台中。 谁能帮助我吗?
已编辑,用于添加 作为
$("tr[id=item_type]")
的子级
I've jQuery function on change for a select element:
$("#category").change(function(){
$("table[id=advance_search]").append("<tr id='item_type'></tr>");
$("tr[id=item_type]").append("<td class='field_input'><select id='type'><option value='1'>One<option><option value='2'>Two<option></select></td>");
});
$("tr[id=item_type]").children(".field_input").delegate("select[id=type]", "change", function() {
console.log("change");
});
When I change value on select#type
, string "change" doesn't show in console.
Can anyone help me?
Edited, for adding <td class='field_input'>
as children of $("tr[id=item_type]")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这里的问题是因为
change()
(以及所有其他事件处理程序快捷方式)在页面加载时绑定,但您的元素是在此之后动态添加的。相反,您需要在附加事件后使用delegate()
将事件附加到该元素。或者,如果您使用的是 jQuery 1.7+,您可以使用
on()
:您可能想要修改您在此处附加的
select
元素,因为它有一个ID,如果多次附加,很容易重复,从而导致页面无效。The problem here is because
change()
(and all other event handler shortcuts) are bound on page load, yet your element is added dynamically well after this. Instead you need to usedelegate()
to attach the events to this element after it's appended.Or, if you're using jQuery 1.7+ you can use
on()
:You may want to amend the
select
element you're appending here though, as it has an ID, which could be easily duplicated if it's appended multiple times, which would render the page invalid.您需要使用
on()
函数进行订阅,因为当您订阅时DOM 中不存在change
元素,jQuery 无法找到它。You need to subscribe with
on()
function, because when you subscribong withchange
element doesn't exists in DOM and jQuery can't find it.因为您动态添加它,所以必须使用
live
或delegate
事件because you add it dynamicly you have to use the
live
ordelegate
event试试这个:
来源:http://api.jquery.com/live/
try this:
source:http://api.jquery.com/live/