2017-01-20 213 views
0

我有一些jQuery現在正在導致我頭痛。這一切歸結爲選擇器如何工作。jQuery選擇器不匹配元素

我對形式的一些HTML:

<div id="master"> 
    <div class="row"> 
     <div class="medium-6 columns"> 
      <div class="medium-6 right columns"> 
       <div class="pagerContent"> 
        <div class="pagination"> 
         <div class="page"> 
          <ul> 
           <li> 
            <a href="#"> 
          ...... 
etc. 

其中包含了一堆錨標籤,從我的導航的一部分。

如果我使用下面的jQuery。

$('#master').on('click', '.pagination a', function (event) { 

    -- code -- 

}); 

它的工作原理,但如果我用

$(".pagination a", "#master").on('click', function (event) { 

    -- code -- 

}); 

事實並非如此。

+2

$(「。pagination a,#master」) –

+0

刪除逗號。這應該適用於'$(「。pagination a,#master」)'。請稍微看一下https://api.jquery.com/multiple-selector/ –

+3

@AlexandrMalyita與OP的代碼意圖完全不同。對jQuery選擇器'$()'使用第二個參數應該以父元素爲目標。你基本上已將其改爲AND。 – Jamiec

回答

0

嗨,感謝大家回覆不是這個。我仍然有困難得到這個工作,所以我嘗試了不同的方式,這對我有用。

對於每個鏈接的標籤,我已經定義了一個特定的類作爲一個標識符,

<a href="#"></a> 

成爲

​​3210

然後使用

$(document).on("click", "myFirstLink", function (event) { 
     alert("Hi," + event.target.href + " clicked"); 
    }); 

我現在能處理鏈接。

3

你的兩個例子有微妙的不同。

這,使用延遲事件處理。

$('#master').on('click', '.pagination a', function (event) { 

    -- code -- 

}); 

本質上講,當選擇器.pagination a通過點擊的元素相匹配的click#master和僅火災處理。如果任何子/後代在DOM加載後動態添加到頁面,則此方法可行。

此,不會:

$(".pagination a", "#master").on('click', function (event) { 

    -- code -- 

}); 

它直接連接的click事件「的#master後代匹配.pagination a」,因此要求該元素存在於DOM當附加處理程序。

相關問題