与queryui复选框按钮内容的增加时被替换Backbone.js的(Content with qu

2019-10-31 00:35发布

我有一个代码来替换使用Backbone.js的内容

的jsfiddle

我不知道为什么内容被替换时,该复选框按钮的增长。 简单地说,我用下面的代码来复选框

 $('.checkWeek').button(); 

Answer 1:

我想原因是因为你保持调用$('.checkWeek').button(); 在每次点击所以jQuery不会有趣的东西,并增加了一个span一中span导致规模增长。

一个简单的解决方法是不调用$('.checkWeek').button(); 如果按钮已经存在(或显示)

// if button already exists then dont add it again.
if(!$('label[for=checkWeekM]').hasClass('ui-button'))
      $('.checkWeek').button();

看看这里: http://jsfiddle.net/Thxtr/3/



Answer 2:

目前的代码存储在模板div标签-每次通话时间button模板进行修改。 您可以通过使用避免script类型标签text/template ,这样就不会如JavaScript执行。

现在:

<div data-template-name="central-home">
    <div data-template-name="">
        <input type="checkbox" class="checkWeek" id="checkWeekM" />
        <label for="checkWeekM">L</label>
    </div>
</div>

改成:

<script data-template-name="central-home">  
    <div data-template-name="">
         <input type="checkbox" class="checkWeek" id="checkWeekM" /><label for="checkWeekM">L</label>
    </div>      
</script>

使用JavaScript不变模板不会被发现。 所以,你还必须更新该行:

 content.view = ...$.trim($("[data-template-name='"+ template_name +"'] div").html()...

随着模板的要求是删除一个div内:

content.view = ...$.trim($("[data-template-name='"+ template_name +"']").html() ...

工作拨弄



Answer 3:

我猜$('.checkWeek').button()只需要每调用一次.checkweek总共元素,或者只是一次。

如果是这样那么可能的解决方法是:

  1. 执行$('.checkWeek').button()有条件地(虽然我不知道该测试可能是什么)。
  2. 使$('.checkWeek')选择更多的选择性,即,仅选择新鲜加入的元素。
  3. 如果破坏选项存在,调用$('.checkWeek').button('destroy').button()或类似的-你将不得不通过插件的API文档搜索)。

如果没有应用程序(和插件)的更完整的理解,我不能告诉这些可能性是最合适的。



文章来源: Content with queryui checkbox button grows when is replaced with Backbone.js