2011-12-27 80 views
1

它當第一次加載頁面到瀏覽器的星級插件使用jQuery阿賈克斯負載

Without problem

然而,問題時的DIV容器包含此星級開始正常工作,與阿賈克斯負荷再次加載。它恢復到初始的單選按鈕:

with problem

的代碼來使這個等級星級的作品只是如下簡單:

星級的Widget插件:

$("#stars-wrapper").stars({ 
    cancelShow: false, 
    disabled: true 
}); 

<span id="stars-wrapper"> 
       <input type="radio" id="rate1" name="newrate" value="1" title="Poor" /> 
       <input type="radio" id="rate2" name="newrate" value="2" title="Not that bad" /> 
       <input type="radio" id="rate3" name="newrate" value="3" title="Average" /> 
       <input type="radio" id="rate4" name="newrate" value="4" title="Good" /> 
       <input type="radio" id="rate5" name="newrate" value="5" title="Perfect" /> 
</span> 

阿賈克斯負載:

$('#content_pane').load(href); 

有沒有人有想法ho解決這個問題?它似乎不適用於Ajax負載。

+0

如果您將來可以爲您的代碼創建一個jsFiddle,尤其是對於這樣簡單且自包含的問題,那將會很棒。我們可以更輕鬆地幫助您併發布工作解決方案。 – 2011-12-27 17:38:22

+0

將它放入jsFiddle並不方便,因爲它也涉及服務器端。 – MrCooL 2011-12-28 16:07:56

回答

2

您遇到的問題是您目前只綁定頁面上已存在的元素。當您使用AJAX請求將新數據加載到頁面中時,您的星形窗口小部件不處於活動狀態,因此不受這些新元素的約束。

您將需要重新綁定您的AJAX負載中這些元素,像這樣:

$('#content_pane').load(href, function() { 
    $("#stars-wrapper").stars({ 
    cancelShow: false, 
    disabled: true 
    }); 
}); 

也許你的部件包括live API,但live自jQuery中被棄用。

+0

我已經嘗試過類似的方法,但它不工作。我在發佈後嘗試,我再次執行插件。不過,我也嘗試過你的這個解決方案,併產生了相同的結果。 是的,live()已被棄用,並替換爲jQuery 1.7中的on()。也許我應該試試live()或on()方法。 – MrCooL 2011-12-28 16:11:26