26492


**jQueryドキュメントに、下記セレクタは掲載されているのですが、**

> Selector (“selector1, selector2”)

<http://api.jquery.com/multiple-selector/>

* * *

**下記セレクタが見当たりません。**  
・どういう解釈の挙動になるのでしょうか？  
・掲載されていないということは使わない方が良いのでしょうか？

> Selector (“selector1", "selector2”)


CC BY-SA 3.0
2016-06-06T01:36:15.977
26487
2016-06-06T06:27:12.147
7886
question
jquery
jQueryセレクタで、Selector (“selector1", "selector2”)はどういう意味でしょうか？


**短い回答**

> ・どういう解釈の挙動になるのでしょうか？

`$("selector2").find("selector1")`として動作します。  
selector2のDOMを起点としてselector1のDOMを探します。

> ・掲載されていないということは使わない方が良いのでしょうか？

jQueryの第二引数に関するドキュメントは下記のページにあります。  
<http://api.jquery.com/jQuery/>

**長い回答**

Selectorの第二引数`jQuery( selector [, context ] )`は下記です。

Selector Context  
<http://api.jquery.com/jQuery/#selector-context>

> By default, selectors perform their searches within the DOM starting at the
> document root. However, an alternate context can be given for the search by
> using the optional second parameter to the $() function.

> Internally, selector context is implemented with the .find() method, so $(
> "span", this ) is equivalent to $( this ).find( "span" ).

通常はdocument rootからDOMの検索をしますが、`context`が指定された場合はそのElement(or
jQuery)からDOMの検索を行います。

`$( "span", this )`は`$( this ).find( "span" )`と等価になります。

> context  
>  Type: Element or jQuery  
>  A DOM Element, Document, or jQuery to use as context

正確には、第二引数に指定するのはSelectorではなく、Element or jQueryです。  
Selectorを指定した場合、`this.context`は`document`になります。

ですが、`.context`は既に非推奨のプロパティであり、jQuery 3.xで削除されるため、Selectorを指定しても問題はないかと思われます。  
(`$("context").find("selector")`として動作します)

Category: Deprecated 1.10  
<http://api.jquery.com/category/deprecated/deprecated-1.10/>

Breaking change: Deprecated `.context` and `.selector` properties removed  
<https://jquery.com/upgrade-guide/3.0/#breaking-change-deprecated-context-and-
selector-properties-removed>

* * *
[code]

    var noContext = $("li", "ul.list");
    var context   = $("li", $("ul.list")[0]);
    
    console.log(noContext.context); // = document
    console.log(context.context);   // = ul.list
[/code]

[code]

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <ul class="list">
      <li>1</li>
      <li>2</li>
    </ul>
[/code]

* * *

余談ですが、第一引数のSelectorにidセレクターのみ指定した場合、第二引数は無視され`document.getElementById()`が使用されます。  
(id要素はHTML内でユニーク(一意)であるため)


CC BY-SA 3.0
2016-06-06T02:57:00.880
26492
2016-06-06T06:27:12.147
2016-06-06T06:27:12.147
3068
3068
26487
answer