2016-11-29 71 views
0

我有點困惑jQuery如何通過DOM搜索。 它是否從根節點選擇,類似於XPath /選擇器,還是從當前選擇,無論它們在哪裏,類似於XPath //選擇器?通過ID或類與jquery選擇嵌套元素

我有以下設置:

<body> 
    <div id="contentSection"> 
    //A bunch of nested DIVs follow 
      <div id="parentDIV"> 
       <span>Selector1</span> 
       <select class="selector" id="first"> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option>     
       </select> 

       <span>Selector2</span> 
       <select class="selector" id="second"> 
        <option value="A">A</option> 
        <option value="B">B</option> 
        <option value="C">C</option>     
       </select> 
      </div> 
    </div> 
    <div id="someOtherDIVs> </div> 
    <div id="someOtherDIVs> </div> 
    </body> 

現在,如果我嘗試首先選擇的內容部分,然後按類別或ID過濾器,我可以將一個事件處理程序中選擇元素,但如果我嘗試要直接查詢元素,事件處理程序從不附加。

例如,這個工程:

$('#contentSection').change('.plotSelector', function(e) 

但這些並不:

$('#first').change(function(e) ... 
$('.selector').change(function(e) ... 

有人能解釋一下爲什麼?有沒有一種方法可以從根中選擇DOM中任何位置的任何元素?

使用jQuery 2.1.1

+0

對我的作品https://jsfiddle.net/3Lanknz7/ – Gavin

+0

..和我https://jsfiddle.net/markwill/0nunxzy5/2/ –

回答

0

是在選擇跨越DOM(http://api.jquery.com/category/selectors/

在評論工作提供的小提琴工作,你檢查你的控制檯的錯誤,也許JavaScript是沒有運行完全。

+0

控制檯上沒有錯誤。 – ventsyv

+0

也許檢查你是否正確地選擇,例如設置一個樣式或元素上可見的東西。另外,檢查你的JavaScript正在運行。小提琴的作品,所以它一定是微不足道的。 –

+0

這是微不足道的。註冊事件的代碼在頁面完全呈現之前被調用,因此我想要附加的元素不存在。 Duhh – ventsyv

0

有沒有辦法從根目錄中選擇 DOM中任何位置的任何元素?

只要你從document.開始,標準的JavaScript方法所有從根選擇:

  • document.getElementById('');
  • document.getElementsByClassName('');
  • document.getElementsByTagName('');
  • document.querySelector('');
  • document.querySelectorAll('');