2012-04-16 31 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") 
相关问题