2011-04-19 76 views
0

我開始使用JQuery和一般的JavaScript,但我遇到了一個我不理解的問題。假設我有一個數據表(假設表的id是'tbl'),它有元素,可能有也可能沒有與之關聯的'orderasc'類(每次只有一個元素可以擁有這個元素,但沒有人必須擁有它)。jquery:.find()搜索的屬性

我可以檢查元素的存在,使用以下的「orderasc」類:

if($('#tbl th').is('.orderasc')) { 
    //do something here 
} 

工作正常。在if語句內部,我試圖提醒具有'orderasc'類的元素的name屬性。嘗試以下不起作用(顯示未定義):

alert($('#tbl th').find('.orderasc').attr('name')); 

但下列情況:

alert($('#tbl').find('th.orderasc').attr('name')); 

同樣的,當我修改我原來的if語句這樣:

if($('#tbl').is('th.orderasc')) { 
    //do something here 
}  

它不起作用。 有人可以向我解釋幕後發生了什麼,並給我這些結果嗎?

回答

0

$('#tbl th').find...遞歸搜索th中的DOM,但是您的th是具有該類的元素。

要補充的是,find函數是遞歸的,並且可能很昂貴。至少比children函數或psuedo類更昂貴。我建議這樣的事情,而不是:

alert($('#tbl th.orderasc:first').attr('name')); 

jsFiddle

+0

有關使用find()發生遞歸的信息。感謝您的解釋和提示! – user417918 2011-04-19 22:45:17

0

.find()搜索中的孩子,元素中。由於th的類別爲orderasc,因此您的選擇器:$('#tbl th')已在th.find()將在th中看orderasc類。