jquery highlight text 不生效问题

cscxxx 2015-10-28 11:34:23
我用$.getJson()取回的数据组成table的tr和td,但是组合之后要Highlight某些字符串不生效,但是直接把table和js放到jsfiddle上就可以Highlight,是组合table的问题吗?请教应该怎么改?

组成table的代码:

$.getJSON(url, function(result){
//alert(result.response.docs.length);
//alert(result.response.docs[1].key);
project_r = result.response.docs.length;
for (var i = 0; i < result.response.docs.length; i++) {
thisResult = "<tr><td style='font-size:18px;border-bottom:3px #cccccc solid;' class='td_content'>";
$.each( result.response.docs[i], function( x, item ) {
//alert("i:"+i+" item:"+item);
if(x!='_version_' && x!='rownum'){
thisResult = thisResult + x + ":" + item + "<br>";
}
});
thisResult = thisResult + "</td></tr>";
$("#result_table").append(thisResult);
}
});
$('.td_content').highlight(search_s);


highlight的代码:

$.fn.highlight = function(word) {
var pattern = new RegExp(word, 'g'),
repl = '<span style="background-color:Yellow;">' + word + '</span>';

this.each(function() {
$(this).contents().each(function() {
if(this.nodeType === 3 && pattern.test(this.nodeValue)) {
$(this).replaceWith(this.nodeValue.replace(pattern, repl));
}
else if(!$(this).hasClass('ref')) {
$(this).highlight(word);
}
});
});
return this;
};
...全文
178 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cscxxx 2015-10-29
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
thisResult = thisResult + "</td></tr>"; $("#result_table").append(thisResult); $('.td_content').highlight(search_s); } }); $('.td_content').highlight(search_s); 加红色那句,重新高亮一次,要不动态加载的由于异步问题晚于蓝色那句的执行,导致ajax加载的内容没有高亮
果然加上就可以了感谢
Go 旅城通票 2015-10-28
  • 打赏
  • 举报
回复
$.getJSON(url, function(result){ //alert(result.response.docs.length); //alert(result.response.docs[1].key); project_r = result.response.docs.length; for (var i = 0; i < result.response.docs.length; i++) { thisResult = "<tr><td style='font-size:18px;border-bottom:3px #cccccc solid;' class='td_content'>"; $.each( result.response.docs[i], function( x, item ) { //alert("i:"+i+" item:"+item); if(x!='_version_' && x!='rownum'){ thisResult = thisResult + x + ":" + item + "<br>"; } }); thisResult = thisResult + "</td></tr>"; $("#result_table").append(thisResult); $('.td_content').highlight(search_s); } }); $('.td_content').highlight(search_s); 加红色那句,重新高亮一次,要不动态加载的由于异步问题晚于蓝色那句的执行,导致ajax加载的内容没有高亮
caicaihui 2015-10-28
  • 打赏
  • 举报
回复
问题没有表述清楚啊~~~

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧