更改时动态创建的选择菜单不起作用
我这里有一个jsfiddle – http://jsfiddle.net/FTHVJ/
并在这里演示 – http://ttmt.org.uk/select
我知道这看起来有点疯狂,但它是我可以得到的实际代码。
我在选择菜单#menu_One上有一个’更改’事件处理程序
然后添加一个新的选择菜单#menu_Two,它在jquery中保存为变量。
然后我尝试在这个添加的选择菜单中添加一个’更改’事件处理程序。
on’change’事件不适用于添加的选择菜单。
*{ margin:0; padding:0; } body{ background:#eee; } #wrap{ max-width:800px; margin:0 auto; background:#fff; height:1000px; padding:50px; } #new_select{ height:50px; margin:20px 0 0 0; padding:10px 0 0 0; background:red; } Title of the document Menu One 1 Menu One 2 Menu One 3 Menu One 4 Menu One 5 $(function(){ var select_two = ""; select_two += "Menu Two 1"; select_two += "Menu Two 2"; select_two += "Menu Two 3"; select_two += "Menu Two 4"; select_two += ""; $('#menu_One').on('change', function(){ $('#new_select').append(select_two); }); $('#menu_Two').on('change', function(){ alert('here'); }) });
对于动态创建的元素,您需要使用.on
函数 :
$('#new_select').on('change', '#menu_Two', function(){ alert('here'); });
事件侦听器只能附加到DOM中的元素,而不能附加到当时不存在的元素。
尝试:
$(document).on('change', '#menu_Two', function(){ alert('here'); });
DEMO FIDDLE
在添加DOM节点之前,不应添加事件处理程序:
$(function(){ var select_two = ""; $('#menu_One').on('change', function(){ $('#new_select').append(select_two); $('#menu_Two').on('change', function(){ alert('here'); }) }); });
小提琴: http : //jsfiddle.net/cjcLU/
这就是我做到的
$(document).on('change', "body", function(){ $( ".ui-selectmenu" ).selectmenu(); });