我在维护最近安装了Google-CSE模块的Drupal网站,该模块会索引并提供搜索结果。jQuery为动态内容添加功能
使用jQuery,我需要修改搜索产生的节点标题。这是十分必要的,因为搜索结果会动态加载到已加载的搜索结果页面中。
使用下面的代码:
(function ($) {
Drupal.behaviors.cse = {
attach: function (context, settings) {
jQuery(document).ready(function ($) {
checkContainer();
});
function checkContainer(){
if($('div#___gcse_0 div.gsc-resultsbox-visible').is(':visible')){
$('div#___gcse_0 div.gs-title a.gs-title').each(
function(){
$(this).css('color', 'green');
text = $(this).text();
$(this).text(text.replace('| MATCHING TEXT TOBE SUBSTITUTED','---***---'));
}
);
}else{
setTimeout(checkContainer, 50);
}
}
}
}
})(jQuery);
上面的代码工作在搜索结果的第一页上,但是当后续页通过AJAX加载失败。
我说实话,我不知道行为是如何正确实施的。在研究这个问题的解决方案时,我读取行为可以附加到动态创建的元素。但是,我没有得到理想的结果。
checkContainer仅在文件上被调用。你必须绑定动态添加的数据并再次调用checkContainer。 –
@NidhinChandran:谢谢,但我需要更多的帮助。我是新来的。 – sisko
你能分享ajax功能吗?我想你只需要在ajax调用结束后调用checkContainer。你可以在'ajax done'内做到这一点 –