JSfiddle:http: //jsfiddle.net/hugolpz2/QCjJD/9/
给定一个带有硬编码按钮的 html锚点、纯 JS 注入按钮和 Mustache 注入按钮,最终结果如下:
<div id="anchor">
<button class="tpl html status0" data-lexeme="A">A</button>
<button class="tpl html status0" data-lexeme="B">B</button>
<button class="tpl PureJS status0" data-lexeme="A"></button><!-- injected with pure JS -->
<button class="tpl PureJS status0" data-lexeme="B">B</button><!-- injected with pure JS -->
<button class="tpl Mustache status0" data-lexeme="A">A</button><!-- injected with Mustache -->
<button class="tpl Mustache status0" data-lexeme="B">B</button><!-- injected with Mustache -->
</div>
鉴于这样的参考数据
var json = [
{ "id": "A", "status": 0 },
{ "id": "B", "status": 0 },
{ "id": "C", "status": 1 },
{ "id": "AB", "status": 1 },
{ "id": "ABC", "status": 1 },
// { ... } +100 entries
];
给定 JS/JQuery函数 classUpdateFromData() 从数据中对按钮的类进行更新。
// classUpdateFromData():
function classUpdateFromData($set) {
$($set).each(function (i) { // <------------------------------ seems this is the trouble! Select html, js,but NOT mustache generated content!
var lexeme = $(this).data('lexeme');
var val = getJsonVal(json, lexeme);
if (val.status === 1) {
$(this).toggleClass('status1 status0');
} else { /* nothing yet! */ }
});
}
classUpdateFromData('#anchor > .tpl');
为什么我的函数只更新硬编码按钮和纯 JS 注入按钮而不是 MustacheJS 注入按钮?
如何修复使其适用于所有这些,包括 Mustache 创建的功能?
注意:classUpdateFromData() 在模板函数之后触发。