<body> <span class="title" id='color_but'> 点击此处为标题添加颜色 </span> </body> <script type='text/javascript'> $('#color_but').click(function(){ $(this).replaceWith("<input id='ok' type='button'value='确定'/>") }); $('#ok').click(function(){ alert('ddd'); }); </script>通过jquery修改后的button是无法触发的,这是为什么 如果是使用onClick绑定的事件就可以触发,应该是一个基础的问题,一直以为可以这么用的~~
3 回答
森林海
TA贡献2011条经验 获得超2个赞
问题的关键点:
1.<input id='ok' type='button'value='确定'/> 是 未来元素;
2.click时间不支持未来元素;
你要了解:
a)什么事未来元素;
b)哪些JQ方法支持未来元素;
问题答案:
不支持绑定未来元素的方法:click
支持绑定未来元素的方法:on,delegate
翻阅古今
TA贡献1780条经验 获得超5个赞
你对#ok的绑定操作在js执行到这行时就进行了,但得你生成这个#ok要到你点击#color_but之后才出现。
结果就是你在执行绑定#ok的时候,这个#ok还根本没出现。
就你的代码而言,我不知道你的具体应用场景。你绑定部分可以试试代理delegate或者使用 jq 推荐的 on
以下几种都可以
$('body').delegate( '#ok', 'click', function() {
alert('ddd')
})
$('body').on('click', '#ok', function() {
alert('ddd')
})
总之是需要在已存在的上层进行绑定。
- 3 回答
- 0 关注
- 1121 浏览
添加回答
举报
0/150
提交
取消