2012-09-20 41 views
1

以下打開文檔準備就緒後的第一個選項卡。 我只是想保持這個功能,但想添加一個約束: 如果父類Li類是隱藏的,不要這樣做。如果這太複雜了,我還可以添加一個類到<a/>,並說如果它是這種類型,那麼不要這樣做。如何在find()上添加約束?

<ul id="attached_deals_tab" class="nav nav-tabs"> 
    <input id="id_deals-0-id" type="hidden" name="deals-0-id"> 
    <li class="hidden"> 
     <a data-toggle="tab" href="#X">X</a> 
    </li> 
</ul> 


$('#attached_deals_tab').find('a:first').tab('show'); 

那還有可能嗎?

+0

也有一個'輸入'直接在'ul'裏面就是這樣不正確... –

+0

是啊那是Django在一個forloop期間把隱藏的元素放在那裏:) – Houman

回答

1

假設a:first是第一li內是可見你可能只是這樣做:

$('#attached_deals_tab li:first:visible a:first').tab('show'); 

如果你絕對想這取決於沒有類hidden那麼你可以這樣做:

$('#attached_deals_tab li:not(.hidden) a:first').tab('show'); 

而且你可以結合:first:not:visible

另一個技巧是通過努力的jQuery選擇的位由左到您的工作方式對選擇向右,看螢火蟲,你發現dom中的正確元素。

例如。只需在您的Firebug控制檯中執行$('#attached_deals_tab li:not(.hidden))即可返回一個dom對象,您只需單擊該對象即可轉到HTML視圖中選定的元素。

+0

好吧,那裏可以有更多的李。第一個應該總是被打開,但是如果它的li被隱藏,則不應該被打開。這不起作用。 – Houman

+0

立即嘗試?我改變了選擇器。 –

+0

是的,這似乎是工作。它乾淨,我喜歡它。讓我測試更多... – Houman

1

你可以試試這個...

$('#attached_deals_tab').find('li[class!=hidden] a:first').tab('show'); 
+0

這似乎很有前途,但在FireBug中,我仍然是('#attached_deals_tab')。find('li [class!= hidden] a:first');' – Houman

0
var a = $('#attached_deals_tab').find('a:first'); 

if(!a.parent('li').hasClass('hidden')) { 
    a.tab('show'); 
} 
+0

這不太好,但似乎在工作:)讓我測試它更多... – Houman

+0

它應該很好地工作...讓我知道。 –