jQuery.get() - 实际用途?

3
我正在尝试理解为什么要使用 jQuery.get()jQuery.get(index)。文档中提到,这是将 jQuery 选择器转换为原始 DOM 对象而不是将其作为 jQuery 对象和可用于其的方法来处理的原因。
以下是一个快速示例:
$("div").get(0).innerHTML;

等同于:

$("div").html();

显然,这只是一个糟糕的例子,但我很难弄清楚什么情况下会使用.get()方法。你能帮助我理解在我的代码中何时使用此方法吗?
7个回答

4

当你想在一个元素上调用本地JS方法时,这种情况经常发生。

//submitting a form...
$('#mySearchForm').get().submit();

您也可以强制点击提交按钮 $("input#submit").click(); 来执行相同的操作。 - RedWolves
今天早上我的脑子也有点晕。还有一个jQuery方法可以触发提交。$('#mySearchForm').submit(); 也可以起作用。我认为你的回答并不是get()方法的实用用法。 - RedWolves

4
有时候你会使用 noConflict 模式的 jQuery,并希望执行类似以下代码的操作:
var element = jQuery('#jquery_selectors .are > .awesome[and=fast]').get(0);

然后在原型中执行某些操作:

$(element).whatever();

1
我认为这是迄今为止最好的实际应用案例。我仍然希望有一个不依赖于其他库的用例。 - RedWolves
我认为你会发现get()只是为了完整性而存在。例如,你可以将DOM元素转换为jQuery对象,使用 el = $(document.getElementById('something')),因此你应该能够使用el.get()将一个jQuery对象转换为DOM元素。 - rfunduk

3
这可能在做像(伪代码)这样的事情时非常有用:
a = $("div").get()
ajaxsend(a)

有时候您可能需要将实际的DOM对象传递给其他无法处理jQuery对象的函数。


2

这对于访问任何未通过jQuery公开的JavaScript方法非常有用。例如,在jQuery支持offset()之前,我通常会像这样使用get()

var offTop = $(element).get(0).offsetTop;

举个例子,最近我使用它来确定元素的scrollHeight。

var scrollHeight = $(element).get(0).scrollHeight;

这也可以写成:

var scrollHeight = $(element)[0].scrollHeight;

这很棒,是否有一个DOM属性/方法列表,它们尚未在jQuery中得到支持,但可能与get()方法一起使用?那会很好知道。 - RedWolves
我问了一个后续问题,现在我不太确定你的回答是否实际可行。https://dev59.com/-kfRa4cB1Zd3GeqP70gf#770719 - RedWolves

1
Cody Lindley(jQuery团队成员)有一个很好的示例,说明为什么要使用 get() 方法。

如果您需要缓存一组元素,因为您将要删除它们,那么 jQuery 的 get() 方法非常方便。例如,在下面的代码中,我正在将页面上所有的<li>元素保存在数组中,然后将它们删除,并使用此数组将它们添加回页面。理解了吗?

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
</head>

<body>

<ul> 
    <li>test</li> 
    <li>test</li> 
    <li>test</li> 
    <li>test</li> 
    <li>test</li> 
    <li>test</li> 
    <li>test</li> 
    <li>test</li> 
 </ul>

<script>

var test = $('ul li').get();

$('ul').empty();

$.each(test, function(){ $('ul').append('<li>'+$(this).html() + ' new</li>'); });

</script> 
</body> 
</html>

0

我用它来获取单个元素的ID

 $(selector).get(0).id

0

get() 的另一个可能的用途是在 jQuery 中使用 XML 树时。


只是一些愚蠢的东西,例如: var xml = $('<dc xmlns="#"><title>Title</title></xml>'); var title = $('title', xml).get(0);我没有任何实际用途,但我可以想象更多情况下,您希望在HTML之外获取基础DOM(比如将树抛入XPath匹配器中或其他什么...)。 - cbeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接