为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

陪伴而非守候 2018-07-21 13:28:59
<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方法支持未来元素;

问题答案:

  1. 不支持绑定未来元素的方法:click

  2. 支持绑定未来元素的方法:on,delegate


查看完整回答
反对 回复 2018-07-23
?
翻阅古今

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')

})

总之是需要在已存在的上层进行绑定。

查看完整回答
反对 回复 2018-07-23
  • 3 回答
  • 0 关注
  • 1121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信