使用.replace()替换html关键字后,事件失效

新手上路,请多包涵

本人欲实现查询结果对于查询关键字高亮显示,代码大致如下

var html = $(selector).html();
html=html.replace(new RegExp(keyword,'g'),'<font color="red">'+keyword+'</font>');
$(selector).html(html);

成功实现高亮显示关键字,但是原来a标签以及img标签的点击事件却失效。
如何解决这个问题呢?
请不吝赐教!

阅读 4.6k
5 个回答

你的点击事件使用哪个绑定的? on、live?还是其它的 你去看看jQuery的事件绑定 有些能对还未出现在DOM结构中的元素进行事件绑定的,有些则不能

可以看看jQuery的delegate方法,这个可以解决你的问题

新手上路,请多包涵

$('a-certain-selector-parent').on('click', 'selector', function () {

// 绑定事件
});

用三楼的方法,对动态元素总事件委托绑定就行了

新手上路,请多包涵

已经解决了,谢谢各位,tree生成的html元素,我是去查找对应的节点的text,然后对text进行替换,就可以了。实现了功能,但是这个问题我也大概清楚了,是因为插件里面在初始化的时候已经绑定了事件,而我的查询,会重新初始化这个插件,最后我又对整个查询结果的HTML进行了Replace,因此,对应的事件也被销毁了,既如此,就只有重新绑定事件了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题