2012-04-16 72 views
0

我有以下幾點:有沒有一種快捷方式來引用我的DIV中的元素?

<div class="modal hide fade" id="adminDialog" style="display: none;"> 
    <div class="modal-header"> 
     <a data-dismiss="modal" class="close">×</a> 
     <h3 id='dialog-heading'></h3> 
    </div> 
</div> 

我創造了這個變量:

dialogDiv = $('#adminDialog'); 

我想改變標題的文本。如果我想這樣做,我需要 使用$('#dialog-heading').text()還是有一種基於dialogDiv變量的快捷方式?

回答

1

如果它是基於對dialogDiv那麼這是最好的一個,我知道

$("h3", $("#adminDialog")).text('new text'); 

或者

$("h3", dialogDiv).text('new text'); 

這個選擇告訴你找到的範圍內的h3#adminDialog


但是你使用的是div的id,所以沒有選擇器可以直接選擇頂部。像

$('#dialog-heading').text('new text'); 
+0

h3是第一位?我從來沒有見過這種選擇器。我也可以用dialogDiv替換$(「#adminDialog」)嗎? – 2012-04-16 07:58:30

+0

@MarieJ,當然,你可以 – Starx 2012-04-16 07:59:13

+0

所以$(「h3」,dialogDiv).text()會沒事嗎?這對我來說看起來很乾淨:-) – 2012-04-16 08:04:12

0

您可以使用dialogDiv$('#adminDialog')作爲它們引用同一個對象。它只適用於當前範圍內存在dialogDiv(也就是說,如果您已將其分配給某個功能,則該功能僅在該功能中提供)

+1

雖然ID查找很可能是'O(1)',但通過ID查找會比'dialogDiv'中的查找快。 – ThiefMaster 2012-04-16 07:56:22

+0

但我的意思是我設置H3標題的最簡潔方法是什麼。我認爲它看起來更乾淨,如果我可以使用dialogDiv作爲基地,但我不知道如何做到這一點。 – 2012-04-16 07:56:38

+0

定義乾淨,它不是'寫在石頭上'。如果你需要將它用於很多事情,你可以將它保存在一個變量中,但是如果你只做一件事,那就直接使用jquery,這樣你就沒有所有的變量。關於速度:你在這裏尋找輕微的,微小的微觀內化,請不要打擾。 – Nanne 2012-04-16 07:58:18

0

只要您有權訪問當前範圍內的dialogDiv,它甚至更喜歡使用dialogDiv.find("#dialog-heading").text("new text"),因爲它不需要再遍歷整個DOM,因此稍微有更多的表現。

+0

'$('#adminDialog')'不會被jQuery緩存嗎? – KooiInc 2012-04-16 07:56:35

+0

@KooiInc會嗎?我一直都認爲你應該自己緩存對象來提高性能。緩存是新的還是我錯過的東西?有什麼好的閱讀呢? – 2012-04-16 08:01:15

+0

你沒有錯過任何東西,我的壞,沒有任何緩存。請參閱http://stackoverflow.com/questions/291841/does-jquery-do-any-kind-of-caching-of-selectors。 – KooiInc 2012-04-16 08:14:21

0

它高度依賴於您的需求。

由於你的元素有一個ID,$('#dialog-heading')將是訪問它的最快方式。

但是,如果你想訪問「的<h3>#adminDialog,更好地運用adminDialog.find('h3')

0

假設你只有一個h3子元素在你的div#adminDialog,你也可以使用一個CSS選擇器:

$('div#adminDialog h3').text("bla bla") 
相關問題