为什么.find()总是返回true?

mas*_*gns 9 html javascript jquery

似乎jQuery的.find()方法总是返回true.但这并不是很有用,因为你还要检查返回对象的长度,看看它是否真的存在.

有人对这种行为有一个很好的解释吗?

Dog*_*ert 13

它不会返回true.它返回一组空元素,如果这样做,则为true ==.您需要检查.length并检查是否返回了0个元素.

  • @EvilP:`find()`是可链接的,所以你可以这样做.`jQuery(element).find('a').hide();`如果`find()`返回一个布尔值,这是不可能的. (7认同)
  • @EvilP Find()非常有用!好像你误解了它的使用,看看文档.http://api.jquery.com/find/ (2认同)

Bla*_*ise 6

示例如何检查匹配的元素是否匹配:

if ( $('body').find('li').length ) {
    // at least one li was found
} else {
   // no li's where found
}
Run Code Online (Sandbox Code Playgroud)

$()和select方法一样find(),filter()总是返回一个jQuery对象.这样你可以链接方法.你可以做点什么

$('body').find('li').add('<p>')
Run Code Online (Sandbox Code Playgroud)

这将查找正文中的所有列表元素,并向所有人添加一个段落.如果因为它不包含任何li $('body').find('li')而返回false,则该add()方法会抛出错误,因为您无法做到false.add().


jen*_*ram 6

有人对这个习惯有一个很好的解释吗?

如果.find()要返回布尔值而不是jQuery对象,则不能将其用于链接,这是jQuery的总体目标之一.