2011-12-27 84 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