我目前在同一页面上运行几个jQuery脚本,这个特定页面上有一个产品过滤器(使用ajax)。 http://www.ctagroup.com.au/cta-group-home/products/selector/
我正在使用的一个脚本是:
var $s = jQuery.noConflict();
$s('body').each(function () {
$s(this).html($s(this).html().replace(/(\®)/g, '<sup>®</sup>'));
});
因此,每个®都在整个地点使用。 单击过滤器选项后,它将返回,而不会运行我的脚本。
每次使用ajax过滤器时,如何让这个脚本再次运行?
答案 0 :(得分:1)
我不知道你是否需要jQuery.noConflict();
,我不明白你为什么会这样做;但这是一个没有它的例子。注意我不喜欢你这样做的方式,所以,使用你的页面,我把它集中了一点。您可以根据需要修改它,使用选择器定位特定元素。
在某个名为 customFixReg
的自定义事件处理程序中放入jQuery(document).on('customFixReg', function() {
jQuery('.sf-result').find('.prod-cont-selector').find('p')
.filter(':contains("®")').each(function() {
jQuery(this).html(jQuery(this).html()
.replace(/(\®)/g, '<sup>®</sup>'));
});
});
编辑:不喜欢双选择器,这也有效:
jQuery(document).on('customFixReg', function() {
jQuery('.sf-result').find('.prod-cont-selector').find('p')
.filter(':contains("®")').html(function(i, val) {
return val.replace(/(\®)/g, '<sup>®</sup>');
});
});
然后,当;在您需要的地方,触发它:
jQuery(document).trigger('customFixReg');
我抓住了一些内容并在此处进行了测试:https://jsfiddle.net/MarkSchultheiss/j787Ljzz/
引用评论,您的页面在页面上的连续行中有这个:所以它根据先前的代码中断。页面上的第789行:
<script>
var $s = jQuery.noConflict();
$s('body').each(function () {
$s(this).html($s(this).html().replace(/(\®)/g, '<sup>®</sup>'));
});
</script>
<script>
jQuery(document).on('customFixReg', function() {
jQuery('ul.sf-result').find('.prod-cont-selector').find('h3,p')
.filter(':contains("®")').each(function() {
jQuery(this).html(jQuery(this).html()
.replace(/(\®)/g, '<sup>®</sup>'));
});
});
</script>
编辑:如果触发器重复出现,我发现了一个错误,它会进行双重换行,因此我会过滤掉带有<sup>
元素的那些。
jQuery(document).on('customFixReg', function() {
jQuery('.sf-result').find('.prod-cont-selector').find('p,h3').filter(':contains("®")')
.filter(function() {
return !$(this).children('sup').length;
})
.each(function() {
jQuery(this).html(function(i, val) {
return val.replace(/(\®)/g, '<sup>®</sup>');
});
});
});