我使用的是一個來自here的jQuery星級插件,效果很好,但是在頁面加載時有一個被調用11次的函數!該功能只應在評級被提交時被調用,即點擊一個星號。 有什麼我可以做的,以阻止它在頁面加載被調用?防止jQuery函數在頁面加載時被多次調用
這是功能,這是在$(文件)。就緒在我的js文件:
$(".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"/>
UPDATE: 嘗試一些提到的修復後,我意識到,計費方法沒有得到多次調用,但它內部的回調是,並且因爲這包含了我的getJSON調用,所以多次調用它。我認爲需要多次回調才能將單選按鈕轉換爲星星。
解決的辦法是將getJSON調用移入一個單獨的函數中,並在插件的js文件中爲OnClick後面的html添加一個OnClick。
它嵌套在一堆divs中嗎?你有沒有試過[this](http://api.jquery.com/event.stopPropagation/) – tjameson 2011-04-05 17:40:40
「rating」方法來自哪裏?這可能是問題所在。 – 2011-04-05 17:50:10
@Mike來自插件。 – eagerMoose 2011-04-05 17:50:51