我有以下 Smary 模板(它是一个文件树,文件被单独填充,然后list_html
分配给 geberated file tree hrml)
<script>
$("#directory-list-root").on("click", "div.content", function() {
$("div.selected", "#directory-list-root").removeClass("selected");
$(this).addClass("selected");
// Check if directory is expanded
var node = $(this).parent("li.directory");
if (node.hasClass("expanded")) {
node.removeClass("expanded");
$(this).siblings("ul.container").hide();
} else {
node.addClass("expanded");
$(this).siblings("ul.container").show();
}
} );
</script>
<div id="directory-list-root">
<ul class="container" style="padding:5px" id="tree">
{$list_html}
</ul>
</div>
在代码中,它被使用了两次(在逐个显示的 jquery-ui 对话框中)。问题是第一次处理功能是可以的,但对于第二次点击处理程序不起作用。如果我从第一个对话框中删除树,则会分配第二个对话框中的处理程序。
你知道如何解决这个问题吗?
提前谢谢你!
如果这很重要,我正在运行 Smarty 3.1.13
。
如果模板使用两次,文档中将有两个 id directory-list-root
的元素,这是非法的。结果是事情不会奏效。
而是通过每次递增内部计数器变量来使用动态 id,例如使用 {counter}
:
<script>
$(function() {
{counter name=tree assign=uniqueId}
var $root = $("#directory-list-root-{$uniqueId}");
$root.on("click", /* etc */);
});
</script>
<div id="directory-list-root-{$uniqueId}">
<ul class="container" style="padding:5px" id="tree">
{$list_html}
</ul>
</div>