我正在维护一个Drupal网站,我们最近在其中安装了Google-CSE模块,该模块可以索引并提供搜索结果。
使用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加载后续页面时失败。
我说实话,我不知道行为是如何正确实施的。在研究这个问题的解决方案时,我读到的行为可以附加到动态创建的元素上。但是,我没有得到理想的结果。
答案 0 :(得分:0)
编辑: -
尝试使用ajaxComplete
。每当ajax请求完成时,都会触发ajaxComplete
。
$( document ).ajaxComplete(function() {
checkContainer();
});
OLD:
假设您的容器ID是#container
,其中数据是通过ajax加载的。
jQuery(document).on('change', '#container', function() {
checkContainer();
});