使用.text().val()或.html()时,Jquery对象返回undefined

时间:2014-09-30 02:47:44

标签: jquery

这是我在控制台中使用dom选择器创建的foo:

foo
[<input type=​"text" maxlength=​"70" id=​"authCreateAcctUsernameInput" name=​"userName" autocomplete=​"off" autocapitalize=​"off" autocorrect=​"off">​]

然后,在几分钟前刚问过的问题的背面,我了解到如果我想获取jquery对象的textContent,我必须使用.text()

Foo有一些兄弟姐妹:

<fieldset>
    <label class="userName" for="authCreateAcctUsernameInput">Email Address</label>
    <input type="text" maxlength="70" id="authCreateAcctUsernameInput" name="userName" autocomplete="off" autocapitalize="off" autocorrect="off">
    <span id="authCreateAcctUsernameErrorTxt" class="errorMSG" style="display: block;">Please enter a valid email address.</span>

为了获得电子邮件地址&#34;来自Foo的sibling textContent我试过这个:

$(foo).parent().children()[0].text()

但是返回了TypeError: undefined is not a function

这是&#34;工作&#34;:

 $(foo).parent().children()[0]
    <label class=​"userName" for=​"authCreateAcctUsernameInput">​Email Address​</label>​

返回元素。那么为什么我不能添加.text()来获得我需要的东西,这就是字符串&#34;电子邮件地址&#34;?

1 个答案:

答案 0 :(得分:6)

它本身并不“返回未定义”,呃,因为undefined()无效而引发异常。

这是因为.children()[0](相当于.children().get(0))返回一个DOM元素,而不是jQuery对象,因此domElement.text计算为undefined

How to select first child with jQuery?

中可以找到各种形式来查找“第一个孩子”作为jQuery对象/集合