【发布时间】:2012-09-10 18:08:31
【问题描述】:
我正在尝试使用自定义模板填充功能在加载时(最新 jQM 版本)动态填充选择标记。
如果在“pagebeforechange”事件中调用了 fn,则 select 标签被正确初始化。由于在每次页面转换时都会调用此事件,因此我想将 fn 移至“pageinit”事件。这不起作用,大概是因为 DOM 尚未完全可用。如何强制 jQM 在页面中只注入一次内容?目前,我正在使用kludge。肯定有更聪明的方法。感谢您的任何建议。
$(document).bind('pageinit', function () {
InitSelTagTest("#selActTag", "tplTag"); // Does not work.
});
$(document).bind("pagebeforechange", function (e, data) {
if ($("#selActTag").children().size() === 0) {
InitSelTagTest("#selActTag", "tplTag"); // Kludge, but it works
}
});
function InitSelTagTest(el,tpl) { // Append all tags to element el
var lstAllTags = JSON.parse($("#hidTag").val()); // Create tag array
// Retrieve html content from template.
var cbeg = "//<![" + "CDATA[", cend = "//]" + "]>";
var rslt = tmpl(tpl, { ddd: lstAllTags }).replace(cbeg, ").replace(cend,");
$(el).html(rslt).trigger("create"); // Add to DOM.
}
编辑 针对 Shenaniganz 的评论,“pagebeforecreate”事件似乎可以解决问题,即。
$("#pgAct").live("pagebeforecreate", function () {
// Populate tag select. Works. Traversed only once.
InitSelTag("#selActTag", "tplTag");
});
【问题讨论】:
-
可能不是您想要的,但您可以设置一个标志。
标签: jquery-mobile