【问题标题】:The Star Rating widget with jQuery ajax load带有 jQ​​uery ajax 加载的 Star Rating 小部件
【发布时间】:2011-12-28 01:36:36
【问题描述】:

页面首次加载到浏览器时效果很好

但是,当 DIV 容器包含此星级评级时,问题就开始了,并且再次使用 Ajax 负载加载。它被重置为原来的单选按钮:

使这个评级星工作的代码很简单,如下所示:

星级小部件插件:

$("#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> 

Ajax 加载:

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

有人知道如何解决这个问题吗?它似乎不适用于 Ajax 负载。

【问题讨论】:

  • 如果你以后能把你的代码做成一个jsFiddle就太好了,特别是对于这样简单和自包含的问题。我们更容易为您提供帮助并发布有效的解决方案。
  • 在jsFiddle中不方便,因为它也涉及到服务器端。

标签: jquery jquery-plugins


【解决方案1】:

您遇到的问题是您目前只绑定到页面上已经存在的元素。当您使用 AJAX 请求将新数据加载到页面中时,您的星星小部件不活动,因此不会绑定到这些新元素。

您需要在 AJAX 加载中重新绑定到这些元素,如下所示:

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

也许您的小部件包含 live API,但 live 在 jQuery 中已被弃用。

【讨论】:

  • 我已经尝试过类似的方法,但它不起作用。我在发布后尝试过,我再次执行了插件。但是,我也尝试过你的这个解决方案,并产生了相同的结果。是的,在 jQuery 1.7 中 live() 已被弃用并被 on() 取代。也许我也应该尝试使用 live() 或 on() 方法。
猜你喜欢
  • 2010-12-05
  • 2011-08-04
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
相关资源
最近更新 更多