通过jquery 修改的dom 无法使用jquery的方法

<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绑定的事件就可以触发,应该是一个基础的问题,一直以为可以这么用的~~

陪伴而非守候
浏览 1122回答 3
3回答

森林海

问题的关键点:1.<input id='ok' type='button'value='确定'/> 是 未来元素;2.click时间不支持未来元素;你要了解:a)什么事未来元素;b)哪些JQ方法支持未来元素;问题答案:不支持绑定未来元素的方法:click支持绑定未来元素的方法:on,delegate

翻阅古今

你对#ok的绑定操作在js执行到这行时就进行了,但得你生成这个#ok要到你点击#color_but之后才出现。结果就是你在执行绑定#ok的时候,这个#ok还根本没出现。就你的代码而言,我不知道你的具体应用场景。你绑定部分可以试试代理delegate或者使用 jq 推荐的 on以下几种都可以$('body').delegate( '#ok', 'click', function() {&nbsp; &nbsp; alert('ddd')})$('body').on('click', '#ok', function() {&nbsp; &nbsp; alert('ddd')})总之是需要在已存在的上层进行绑定。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery