如果不简化事情,为什么要在jQuery中包装DOM元素? (来自jQuery Cookbook的示例)

时间:2011-04-02 03:07:21

标签: jquery

我在O'Reilly jQuery Cookbook (配方3.1)中看到了这个例子:

var urls = [];
$("div#post a[href]").each(function(i){
    urls[i] = $(this).attr('href');
});
alert(urls.join(","));

我理解$().each(fn)在所选DOM元素的上下文中运行该函数。我不明白的是:为什么要将DOM元素包装在jQuery对象中?

在我看来,urls[i] = this.href;在这里会更直接。

  • 始终包装是最佳做法 之前jQuery中的DOM元素 触摸他们?
  • 或是作者在做什么 这只是为了告诉我们它可以 做什么?
  • 还是为其他人做了 完全是因为什么?

3 个答案:

答案 0 :(得分:4)

jQuery的主要目标之一是充当程序员与潜在不可预测的浏览器定义函数之间的一致层。所以,是的,通常最好的做法是将jQuery包装用于任何DOM函数。

答案 1 :(得分:1)

通常我尝试在本机JavaScript中执行所有JavaScript并在适当的地方使用jQuery。话虽这么说,如果你没有将DOM元素包装在jQuery对象中,那么你将无法访问jQuery方法。

答案 2 :(得分:0)

使用jQuery Object进行包装允许与其他jQuery函数链接。 jQuery的主要目的是实现跨浏览器的兼容性。它还简化了我们使用JavaScript的方式。

例: $('#id').attr(...).css(...).delay().fadeIn().fadeOut().remove() ....等等。使用普通的Javascript编写代码需要花费很多代码,时间和精力,更不用说保持浏览器兼容性了。