jQuery,脚本无法识别新附加的元素
我有一个简短的脚本,样式形成单选按钮。 查看工作示例http://jsfiddle.net/YJRsk/ 。
当DOM中已存在单选按钮时,这非常有用。 因此,当页面加载时,它们可以正确设置样式。
问题是当我通过附加它们动态添加单选按钮时,脚本无法识别它们,因为它已经在页面加载时运行。 因此,我得到一个错误Uncaught TypeError:无法读取null的属性’style’。 我该如何解决这个问题,以便新添加的无线电在现场自动设置样式,而无需保存和刷新页面。 我尝试在每个无线电附加后运行脚本,但这不起作用。
var item = ''; $('button').live('click', function() { $(item).appendTo('#radio'); })
检查jsfiddle示例并单击“添加无线电”按钮进行测试。
使用CSS规则并向所有单选按钮添加类。 如果您使用高级jQuery选择器进行样式设计,我建议您只使用该样式函数创建每个新元素。
编辑:这里的基本问题是你的.js文件是在页面加载时加载的,所以如果你使用类似的东西:
$(".mybutton").click(function() { alert("test"); });
此事件只会’加到’页面加载时存在的.mybutton元素。 如果动态创建/添加元素,则必须再次为它们分配上述事件处理程序。
这也会导致你的uniqid()
函数为当前添加的所有单选按钮创建相同的id。 这样做是这样的:
$('button').live('click', function() { var item = ''; $(item).appendTo('#radio'); })
编辑2:
我不知道你的单选按钮使用了什么样的jQuery样式,但基本的想法是每次都在新创建的按钮上使用样式function。 看到这个小提琴: http : //jsfiddle.net/YJRsk/11/
如果我仍然遗漏了某些内容,请详细说明并向我们展示您用于单选按钮样式的jQuery。
如果您知道单选按钮的最大数量,这就是我要做的:
-
向表单添加最大数量的单选按钮(仅显示您不希望在开头显示的那些按钮)
-
留下脚本来设置样式
-
单击按钮,只需逐个显示已设置样式的单选按钮
我希望我足够清楚。
您忘了在Javascript中添加一段HTML代码。
var item = ' '; $('button').live('click', function() { $(item).appendTo('#radio'); })
也就是说,使用CSS设置单选按钮的样式可能是一个更聪明的想法