Javascript jquery find()方法 请考虑以下代码: <!DOCTYPE html> <html> <style> p{ width:200px; } </style> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <p><span>Hello</span>, how are you?</p> <p>Me? I'm <span>good</span>.</p> <script> $(document).ready(function(){$("p").find($("*")).andSelf().css("background- color","blue"); }); </script> </body> </html> p{宽度:200px;}

Javascript jquery find()方法 请考虑以下代码: <!DOCTYPE html> <html> <style> p{ width:200px; } </style> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <p><span>Hello</span>, how are you?</p> <p>Me? I'm <span>good</span>.</p> <script> $(document).ready(function(){$("p").find($("*")).andSelf().css("background- color","blue"); }); </script> </body> </html> p{宽度:200px;},javascript,jquery,Javascript,Jquery,你好,你好吗 我?我很好 $(document).ready(function(){$(“(”)).find($(“*”)).andSelf().css(“背景色”,“蓝色”);}); 输出是整个文档变成蓝色,而我只希望其中的段落和跨度变成蓝色 如果我使用$(“*”).find($(“*”)而不是$($).find($(“*”),那么所有内容都会根据我的需要显示。有人能找出这两种方法的区别吗?谢谢 注意:请大家注意,我知道有更简单的方法来做这件事,但我只想知道为什么这样做不起作用。如果您想选择

你好,你好吗

我?我很好

$(document).ready(function(){$(“(”)).find($(“*”)).andSelf().css(“背景色”,“蓝色”);}); 输出是整个文档变成蓝色,而我只希望其中的段落和跨度变成蓝色

如果我使用
$(“*”).find($(“*”)而不是$($).find($(“*”)
,那么所有内容都会根据我的需要显示。有人能找出这两种方法的区别吗?谢谢


注意:请大家注意,我知道有更简单的方法来做这件事,但我只想知道为什么这样做不起作用。

如果您想选择所有p,只需使用

$(document).ready(function(){
    $("p").css("background-color","blue"); 
});
没有理由把事情复杂化

如果要选择内部跨距,可以执行以下操作

$(document).ready(function(){
    $("p > span").css("background-color","blue"); 
});
**更新**


find查询中的选择器属性不正确,您不应该像
$(“*”)
那样使用它,而应该只使用
“*”
。但是,
$(“p”).find(“*”)…
只会选择
标记中的任何元素,因此在find方法后面加上andSelf将使选择变得不明确。

如果要选择所有p,只需使用

$(document).ready(function(){
    $("p").css("background-color","blue"); 
});
没有理由把事情复杂化

如果要选择内部跨距,可以执行以下操作

$(document).ready(function(){
    $("p > span").css("background-color","blue"); 
});
**更新**


find查询中的选择器属性不正确,您不应该像
$(“*”)
那样使用它,而应该只使用
“*”
。但是,
$(“p”).find(“*”)…
只会选择
标记中的任何元素,因此在find方法后面加上andSelf将使选择变得不明确。

您不必执行任何操作。就这么做吧

$(function() { $("p").css('background-color', 'blue'); });
注意:
$(函数(){})
$(document).ready(function(){})相同

编辑:由于您有两个,您可能需要执行以下操作:

$(function() { $("p").each(item, function() { item.css('backround-color', 'blue'); })});
编辑2:根据您的评论,您希望:

$(function() { $("p").find('span').andSelf().css('background-color', 'blue'); });   

你不必做这些。就这么做吧

$(function() { $("p").css('background-color', 'blue'); });
注意:
$(函数(){})
$(document).ready(function(){})相同

编辑:由于您有两个,您可能需要执行以下操作:

$(function() { $("p").each(item, function() { item.css('backround-color', 'blue'); })});
编辑2:根据您的评论,您希望:

$(function() { $("p").find('span').andSelf().css('background-color', 'blue'); });   
你只需要

$("p").css("background-color","blue");
更改文档中的颜色或所有p标记。您这样做有什么具体原因吗?

您只需要

$("p").css("background-color","blue");
更改文档中的颜色或所有p标记。您这样做有什么具体原因吗?

由于
$(“*”)
没有上下文,因此它会选择文档中的每个元素。您希望查找当前选定元素中的所有元素,因此只需将字符串传递给
find

但是,这是完全不必要的,您可以将样式应用于
p
(因为
span
是一个孩子,您不需要将其应用于该孩子):

请注意,在上面的那一行中,我使用了背景色,没有空格,这与您的问题不同。我猜你写这个问题时只是输入错误,但是如果你在属性名中加空格就不行了。

这个
$(“*”)
没有上下文,所以它会选择文档中的每个元素。您希望查找当前选定元素中的所有元素,因此只需将字符串传递给
find

但是,这是完全不必要的,您可以将样式应用于
p
(因为
span
是一个孩子,您不需要将其应用于该孩子):


请注意,在上面的那一行中,我使用了背景色,没有空格,这与您的问题不同。我猜这只是你写问题时的一个输入错误,但是如果你在属性名中加空格,它就不起作用了。

属性名中的
$(“p”).find(“*”)和
$(“p”).find($(“*”)
是在第二个属性名中传递find()一个jquery对象,而不是常规的选择器字符串

编辑:我刚试过。看起来添加andSelf()会使它以某种方式选择整个文档。逻辑过程是select p>find all elems in The match in The document>select self(p)>color,但select self位似乎出错了


我认为它(andSelf())只是选择传递给find()的对象,即$(“*”),然后选择所有对象。

$(“p”).find(“*”)和
$(“p”).find($(“*”)
是在第二个对象中传递find()一个jquery对象,而不是常规的选择器字符串

编辑:我刚试过。看起来添加andSelf()会使它以某种方式选择整个文档。逻辑过程是select p>find all elems in The match in The document>select self(p)>color,但select self位似乎出错了

我认为它(andSelf())只是选择传递给find()的对象,即$('*'),然后选择所有内容

免责声明:其他答案已经建议使用更好的选择器 实现你的目标,但我知道你想知道为什么
和self()
最终匹配文档中的所有元素,因此我将尝试 解释一下

首先,如您所知,
andSelf()
将堆栈上的前一组元素添加到当前集合中。因此,在您的情况下,似乎应该将
元素添加到包含其子元素的集合中:

$("p")         // match the paragraphs
.find($("*"))  // match all the elements that descend from a paragraph
.andSelf()     // add the paragraphs to the elements above
但是,上面假设
find($(“*”)
是前面的元素集,这里的情况根本不是这样。关于这一点的第一个提示来自以下文档:

从jQuery1.6开始,我们还可以使用给定的jQuery筛选选择 集合或元素。使用与上面相同的嵌套列表,如果我们开始 与:

然后传递此jQuery对象以查找:

$('li.item-ii').find( $allListElements );
这将返回一个jQuery集合,其中