【问题标题】:Prevent jQuery function being called multiple times on page load防止在页面加载时多次调用 jQuery 函数
【发布时间】:2011-04-05 17:30:44
【问题描述】:

我正在使用来自here 的 jQuery 星级评级插件,效果很好,但是在页面加载时,有一个函数会被调用 11 次!只有在提交评级(即点击星号)时,才应调用该函数。 我可以做些什么来阻止它在页面加载时被调用

这是函数,在我的 js 文件中的 $(document).ready 中:

$(".auto-submit-star").rating({
        callback: function (value, link) {
            $.getJSON('/Handlers/RatingHandler.ashx?productId=' + pid + '&productScore=' + value, function (data) { postRatingUpdate(data); });
        }
    });

我没有足够的 javascript 知识,无法自信地在插件的 js 文件中四处寻找,所以我不确定幕后发生了什么。

这是呈现评分星级的 html:

<input class="auto-submit-star" type="radio" name="product-rating" value="1" />
<input class="auto-submit-star" type="radio" name="product-rating" value="2"/>
<input class="auto-submit-star" type="radio" name="product-rating" value="3"/>
<input class="auto-submit-star" type="radio" name="product-rating" value="4"/>
<input class="auto-submit-star" type="radio" name="product-rating" value="5"/>

更新: 在尝试了提到的一些修复之后,我意识到 rating 方法没有被多次调用,但其中的回调被调用了,因为它包含我的 getJSON 调用,所以被多次调用。我认为需要多个回调将单选按钮转换为星星。

解决方法是将getJSON调用移到单独的函数中,并在插件的js文件中,在星号后面的html中添加一个OnClick。

【问题讨论】:

  • 是嵌套在一堆div里面吗?你试过this
  • “评分”方法从何而来?这可能就是问题所在。
  • @Mike 来自插件。
  • 哪个函数被调用了 11 次?整个东西?那是在函数内部吗?让我们看看更多上下文。

标签: jquery html plugins


【解决方案1】:

如果评级被称为 onload。那么似乎 rating 是一种只应在单击收音机时调用的方法。

$(".auto-submit-star").change(function(){
$(this).rating({
    callback: function (value, link) {
        $.getJSON('/Handlers/RatingHandler.ashx?productId=' + pid + '&productScore=' + value, function (data) { postRatingUpdate(data); });
    }
});});

【讨论】:

    【解决方案2】:
    var stopMe = false;
    if(!stopMe) {
    stopMe = true
    $(".auto-submit-star").rating({
            callback: function (value, link) {
                $.getJSON('/Handlers/RatingHandler.ashx?productId=' + pid + '&productScore=' + value, function (data) { postRatingUpdate(data);});
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      相关资源
      最近更新 更多