使用jQuery显示/隐藏特定div

时间:2013-04-16 09:47:24

标签: jquery html twig

我在树枝模板中使用jQuery来显示或隐藏某些div。为了解释上下文,我有一个评论区域,我只想在用户点击某个链接时显示用于评论的表单。但是,这些div是通过“for”循环生成的(因为每个注释都有一个链接来回答这个特定的注释)。然后我必须为每个答案div和他各自的链接设置特定的ID。这看起来并不难,但是我被困住了,我真的不明白为什么......我不确定我是否清楚,所以这里是我的代码:

嫩枝:

{% for commentaire in article.commentaires %}
<div>
    // display comment

    {% for reponse in commentaire.reponses %}
        // display answer
    {% endfor %}

        <a id="lien-reponse[{{ commentaire.id }}]" class="lien-reponse" href="#">Répondre au commentaire</a>
        <div id="div-lien-reponse[{{ commentaire.id }}]" style="display:none">
            // form to answer the comment
        </div>
</div>
{% endfor %}

在此代码中,当用户单击链接#lien-reponse [xx]时,我想显示div#div-lien-reponse [xx]。这是查询代码:

Jquery的:

$('.lien-reponse').click(function(event) {
 var id = $(this).attr("id");
 $('#'+id).hide();
 $('#div-'+id).show("slow");
 event.preventDefault();
});

但是当我点击链接时,它在页面上没有做任何事情(但是网址上没有#,所以我想对jquery函数的调用很好)。我不是很擅长jQuery,所以也许我错过了一些非常明显的东西,或者更简单的方法。

提前致谢,我们非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

首先...... 因为你的id有[]字符,你需要逃避它才能在选择器中使用它 ...所以我认为如果你使用{{{ 1}} ..如果div总是在链接旁边

next()

答案 1 :(得分:0)

您无需跟踪所有这些ID。改为使用DOM。

$('.lien-reponse').click(function(event) {
    $(this).next("div").toggle();
}

答案 2 :(得分:0)

如果您正在使用Symfony2和Twig,请确保在jQuery之后调用您的脚本!

{% block javascripts %}
    <script src='http://code.jquery.com/jquery-latest.min.js'></script>
    <!--<script src='{{ asset('bundles/yourbundle/js/jquery-1.9.1.min.js') }}'></script>-->
    <script>
        $(document).ready(function ($) {
            $(document).on('click', '.lien-reponse', function(event) { // equivalent to $('.lien-reponse').click()
                event.preventDefault();
                $(this).hide();
                $(this).next().show('slow');
                // You can also chain your jQuery dom manipulation:
                // $(this).hide().next().show('slow');
            });
        });
    </script>
{% endblock %}