1

这一定比我想象的要简单。不知道发生了什么。

我有一个 DIV,我正在用 Handlebar 模板“填充”。生成模板后,我使用 jQuery slideDown 打开面板以查看内容。现在我需要放置一个关闭函数来滑动 DIV。

我认为问题在于 click 函数没有被绑定,因为 a.close 元素在脚本标签内。

这是内容的 DIV:

<div id="characteristic" style="bottom:0px; width:800px; display:none; position:fixed; left: 350px;"></div>

这是 jQuery 片段。这是在 HTML 的顶部:

$(document).ready(function(e){
  $("a.close").click(function(e) {
     e.preventDefault();
     $("#characteristic").slideUp();
  });
});

以及模板的一个片段:

<script id="ac-template" type="text/x-handlebars-template">
    <div class="holder" style="background-color:#FFFFFF;">
        <div class="frame">
            <div class="content">
                <div class="info-box-holder">
                    <a class="close" href="">&times;</a>
                    <div class="heading">
                        <h2>ACTIONABLE CHARACTERISTIC</h2>
                    </div>
                    <div class="info-box">
                        <a href="#"><img class="alignleft" src="{{image_large}}" alt="" width="400" height="400" /></a>
                        {{#if subcategory_name}}
                            <h2>{{subcategory_name}}: {{name}}</h2>
                        {{else}}
                            <h2>{{category_name}}: {{name}}</h2>
                        {{/if}}
4

1 回答 1

3

我知道这是一个老问题,您可能已经找到了答案,但是是的,这是因为在您的 JS 代码运行时,a.closeDOM 中不存在。

您需要在把手完成模板渲染后运行 JS 代码,或者绑定到页面加载时存在的更高级别的 DOM 元素(某种容器),然后仅为您想要的链接激活。像这样的东西(见 API):

$(document).ready(function(e){
  $("#mycontainerdiv").on('click', 'div.info-box-holder a.close', function(e) {
     e.preventDefault();
     $("#characteristic").slideUp();
  });
});
于 2012-05-02T00:02:01.160 回答