为什么在我的选择器结尾和结束引号之间需要一个空格?

时间:2014-05-13 00:05:21

标签: javascript jquery html jquery-selectors string-concatenation

代码中的注释显示空格位于选择器之后的位置。如果我在结束引号之前删除空格代码中断,我不明白为什么。有人可以解释一下吗?谢谢。

<script type="text/javascript">

    $("document").ready(function() {    
        buildBookmarks('h3', 'header'); 
    }); 

    function buildBookmarks(strWhichTag, sBookMarkNode) {

        var cAnchorCount = 0;
        var oList = $("<ul id='bookmarksList'>"); 

以下是结束后的空间

        $("div:not([id=header]) " + strWhichTag).each(function() {
            $(this).html("<a name='bookmark" + cAnchorCount + "'></a>" + $(this).html());
            oList.append($("<li><a href='#bookmark" + cAnchorCount++  + "'>" + $(this).text() + "</a></li>"));
        });

        $("#" + sBookMarkNode).append(oList);
    }
</script>

2 个答案:

答案 0 :(得分:2)

显然strWhichTag包含另一个选择器,它意味着在连接这两个选择器字符串时表示div:not(...)的子项。

例如,考虑div.foo(div与类名“foo”)和div .foo之间的区别(类名为“foo”的元素,它是div的子元素)< / p>

答案 1 :(得分:0)

根据W3C:

  

后代选择器由两个或多个由空格分隔的选择器组成。当元素B是某个祖先元素A的任意后代时,形式为“A B”的后代选择器匹配。

http://www.w3.org/TR/CSS2/selector.html#descendant-selectors

如果strWhichTagdiv:not([id=header])的孩子,则两者之间必须有空格。