1
<strong class="comment" id="comment[6]">Show comments</strong> 
<div id="comments[6]">HERE GO COMMENTS</div>

还有我的 JS 文件:

$(document).ready(
    function() {
        $(".comment").click(
            function() {
            var id = $(this).attr("id").replace("comment", "comments");
            //document.getElementById(id).style.display = 'none';
            $('#' + id).hide();
            } );
        });

HTML代码是用PHP生成的,所以有很多数字div,每次点击显示/隐藏对应的div。但问题是,就 Javascript 而言(注释行)一切正常,但是当我尝试使用 jQuery 时没有任何反应。问题出在哪里?

4

4 回答 4

4

这是因为方括号在 jQuery 选择器中具有特殊含义。如果实际 id 包含方括号,则需要使用反斜杠对其进行转义:

    var id = $(this).attr("id")
                    .replace("comment", "comments")
                    .replace(/(\[|])/g,"\\$1");

惊人的演示:http: //jsfiddle.net/B3Hx9/

于 2013-08-04T11:24:26.113 回答
1

您需要使用 \\ 转义 [ ]

于 2013-08-04T11:23:12.710 回答
0
$(document).ready(
    function() {
        $(".comment").click(
            function() {
            var id = $(this).attr("id","comments");
            //document.getElementById(id).style.display = 'none';
            $('#' + id).hide();
            } );
        });
于 2013-08-04T11:22:57.950 回答
0

方括号会丢弃您的 id 选择器,因为在这种情况下使用它们是特殊字符,以允许您执行诸如指定附加属性之类的操作。

虽然您可以转义它们,但最好不要使用它们,例如将您的号码附加到带有下划线或其他字符的 id 上。添加正则表达式来解决问题并不是最优的,因为在更改 id 本身的结构时会增加复杂性,这会使整个事情变得更简单。

示例更改为使用 id_number 格式

<strong class="comment" id="comment_6">Show comments</strong> 
<div id="comments_6">HERE GO COMMENTS</div>
于 2013-08-04T11:25:24.477 回答