1

我开始学习 jQuery,我想知道为什么不能应用 jquery 方法

在这个例子中:

$('p')[0].html('salut !'); //for this instruction i got this error :
                           //"TypeError: $(...)[0].html is not a function "

虽然这个有效:

$('body')[0].tagName.toLowerCase();

我很困惑,我想知道这两种情况有什么区别。

这是同一问题的另一个示例:

var listItems = $( 'li' );
var rawListItem = listItems[0]; // or listItems.get( 0 )
var html = rawListItem.html();
// Object #<HTMLInputElement> has no method 'html'

以下是如何使用 .eq() 使用 jquery 方法的方法:

var listItems = $( 'li' );
var secondListItem = listItems.eq( 1 );
secondListItem.remove();

感谢您为此提供一些解释。

4

2 回答 2

3

jQuery 对象与DOMElement.

  • jQuery 对象让您可以对它们执行 jQuery 操作。html(), val(),eq()
  • DOMElement的……不要。因为它们是DOMElements,而不是 jQuery 对象。

如果您查看 的文档.get(),您会看到您得到的是一个DOMElement返回,而不是一个 jQuery 对象。[0]等也一样。

eq()但是,它会返回一个 jQuery 对象,让您可以对它们进行 jQuery 操作。

tagName是一个DOMElement属性,这就是为什么可以对DOMElement. 返回的 s执行它get(),但不能对 . 返回的 jQuery 对象执行它的原因eq()。在和html()上使用时则相反。get()eq()

当然,您可以通过 将任何对象包装DOMElement在 jQuery 对象中$(),这样您就可以对其执行 jQuery 操作;

$($('p')[0]).html('salut !');

但在您的情况下,您应该使用eq()

$('p').eq(0).html('salut !');
于 2013-01-08T13:35:26.290 回答
2

看起来你是通过练习来学习的,女巫是个好东西,所以这里有一些指针:

  • jQuery 使用对象,当你将它们包装进去时,$(...)你会得到一个对象
  • 当您使用数组指针时,就像$('p')[0]您将始终获得本机数组输出的内容一样,witch 是一个字符串,因此,不是一个对象

为了将第一个元素作为对象检索,您有3 个选择

var jQueryObj = $('p:first'); // using :first

或者

var jQueryObj = $("p").eq(0); // using eq()

或者

var jQueryObj = $( $('p')[0] ); // wrap it in a jQuery call

请记住,console在测试 javascript 时,始终是您最好的朋友

在此处输入图像描述

于 2013-01-08T13:41:29.660 回答