代码之家  ›  专栏  ›  技术社区  ›  Alex

我什么时候才能逃出掌腭裂(jQuery选择器)

  •  5
  • Alex  · 技术社区  · 15 年前

    根据jQuery文档,我需要转义选择器字符串中出现的元字符,当它们作为文本出现时。但是,我找不到很多具体的例子来说明何时以及何时不应该逃避选择器。所以当我不需要逃避元字符,当它们被解释为文字时,在:

    属性选择器?ie公司

    $("[attr=value]")
    

    $("#id")
    

    类选择器?ie公司

    $(".class");
    

    还有,有没有一种方法可以编写一个函数来替换选择器字符串中的元字符,同时保留起始字符?即:

    // replace all meta chars, preserving the id selection?
    $("#id.rest$of*string")
    
    // replace all meta chars, preserving the attribute selection?
    // going back to my previous question, do I even need to escape the metachars in this situation?
    $("[attr=blah.dee#foo*yay]")
    

    我问这个问题的原因,是因为我和一个网站,碰巧有一些非常讨厌的选择。而且我不能控制网站,所以我不能去改变选择器以便更好地工作。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Anurag    15 年前

    从jQuery文档:

    作为名字的字面部分 ,必须用两个反斜杠转义字符。。。

    所有这些都必须逃脱:

    1. 属性名称
    2. 属性值

    前四个很明显,下面是第五个例子。例如,XML中的元素名可以包含“.”字符,但仍然可以是 valid

    <user.name>John Doe</user.name>
    

    如果你必须选择 user.name ,那么 .

    $(xml).find("user\\.name");
    
        2
  •  0
  •   Community Mohan Dere    8 年前

    jQuery selector value escaping ,其中详细描述了jQuery的选择器解析方法。

    简而言之:您可能会遇到麻烦,因为jQuery的选择器解析器不是100%标准的。根据链接答案中的建议,您可以通过调用常规DOM方法来解决问题( document.getElementById()

    $(document.getElementById("id.rest$of*string"));
    
    推荐文章