2013-05-17 36 views
0

我正在處理一個代碼,如果選擇了其中一個LI,則會執行一個操作。 因此,如果第一LI的一個是「當前的」我要執行它的動作,代碼:jQuery:如果ID等於語句

<div id="types"> 
    <div id="division1"> 
     <ul id="selection1"> 
      <li id="current"><a href="#" name="1-1"></a> </li> 
      <li><a href="#" name="1-2"></a></li> 
      <li><a href="#" name="1-3"></a></li> 
     </ul> 
    </div> 
    <div id="division2"> 
     <ul id="selection2"> 
      <li><a href="#" name="2-1"></a></li> 
      <li><a href="#" name="2-2"></a></li> 
      <li><a href="#" name="2-3"></a></li> 
     </ul> 
    </div> 
</div> 

的jQuery:

if (jQuery("#types div ul:nth-child(1)").attr("ID") == "current") { 
    *do this* 
} 

任何人有任何想法,我做錯了什麼?

+1

我不會改變的ID和使用類來代替。 – MMM

+0

這不僅僅是唯一的代碼,其他代碼需要它的ID才能解決。這只是想法。 – Disgeae

+1

嘗試在當前選定的「錨點」中使用'Class'而不是'ID'觸發器。 – Olrac

回答

4

ul沒有ID當前但li確實

試試這個 -

if (jQuery("#types div ul:nth-child(1) li:first").attr("ID") == "current") { 
    *do this* 
} 
0

我會扔我兩分錢在這裏

if($('#types div ul > li:first').is('#current')){ 
    *do this* 
} 

我拋出了1個pseudoselector,1額外的函數調用和1比較內置的is(),我發現它更具可讀性。

並取得Fiddle for demo

更新

你有什麼錯誤是,你已經在父DIV #Uitleg1, #Uitleg2設置display:none,當你試圖.show()你的孩子它繼承了display:none

我用新的選擇器更新了CSS。

#Uitleg1, #Uitleg2 div { 
    display: none; 
} 

並從上面那個刪除display: none;。您的代碼現在按預期工作。

提出的另一項Fiddle for demo

+0

不做這項工作。也許你可以試試?它在:http://jsfiddle.net/disgeae/DtK39/29/ on「if($(」#CertificaatTypes div ul> li:first「)。is('#current')){」 – Disgeae

+0

那麼,選擇器確實有效。如果您在其中放置警報(),則警報正確。 –

+0

我不知道如何重構它:(我只是一個jQuery noobie。任何想法爲什麼div不顯示然後 – Disgeae