加载Ajax(过滤器)后加载jQuery脚本

时间:2016-04-20 01:41:59

标签: javascript jquery ajax function filtering

我目前在同一页面上运行几个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过滤器时,如何让这个脚本再次运行?

1 个答案:

答案 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>');
      });
    });
});

更新了示例:https://jsfiddle.net/MarkSchultheiss/j787Ljzz/4/