【发布时间】: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 次?整个东西?那是在函数内部吗?让我们看看更多上下文。