【问题标题】:jQuery - load from another page after all elements are loadedjQuery - 加载所有元素后从另一个页面加载
【发布时间】:2014-02-04 10:32:08
【问题描述】:

我想显示一个产品的评分,女巫在div中的产品页面上,id为评分,在类别页面上,所以我在下面做了一个脚本:

$('.product').each(function(){
    var url = $(this).find('a').attr('href');
    $(this).prepend('<div class="rating"></div>');
    $(this).find('.rating').load(url +'#rating');
});

问题是,产品页面上的评分是用另一个脚本生成的,所以元素#rating 从一开始就没有出现在网站上,所以在做了一些搜索后,我尝试添加 ajaxcomplete 函数:

$('.product').each(function(){
    var url = $(this).find('a').attr('href');
    $(this).prepend('<div class="rating"></div>');
    $(this).ajaxComplete(function(nxt) {
        $(this).find('.rating').load(url +'#rating');
        nxt();
    });
});

但这似乎也不起作用,所以我想知道有什么解决方案可以解决这个问题吗?

谢谢

【问题讨论】:

  • 其他页面是否包含div#rating
  • 产品页面一开始是没有div#rating的,页面加载完后用脚本加载
  • 您不能在您的类别页面上使用相同的脚本吗?
  • 所以基本上你想知道评级脚本何时执行?
  • 很遗憾我做不到,总结一下,这是用于AB测试的,并且类别页面上没有脚本,而且脚本工作所需的一些参数在类别页面,我恐怕无法更改

标签: javascript jquery jquery-load


【解决方案1】:

您需要使用 jQuery getScript 加载执行评级的脚本。这样,您可以将依赖于评级脚本的处理放在 getScript 调用的成功处理程序中。

代码如下所示:

$.getScript( "rating.js", function( data, textStatus, jqxhr ) {
  console.log( "rating complete" );
  $('.product').each(function(){
    var url = $(this).find('a').attr('href');
    $(this).find('.rating').load(url +'#rating');
  }
});

【讨论】:

  • 问题是有问题的脚本在产品页面上,而不是在我运行代码的类别页面上,有没有办法为另一个页面运行该功能?
  • 所以你基本上是在屏幕上抓取产品页面来获得评级?
  • 是这样的
  • .load() 调用仅获取页面的 HTML 而不会执行它..您需要返回绘图板并使用 iFrames 执行此操作...尝试blog.karlwestin.com/2010/05/… as一个起点。
猜你喜欢
  • 2017-02-22
  • 2019-08-09
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多