Javascript 如何知道jQuery$([CSS选择器])方法中查询的选择器

Javascript 如何知道jQuery$([CSS选择器])方法中查询的选择器,javascript,jquery,Javascript,Jquery,我正在抓取一个网页以提取与特定CSS选择器相关的内容,如下所示: $("p, h1, h2").each(function(index) { // Do stuff }) 现在,我想知道哪个选择器对应于返回的对象:我想知道它是p标记、h1标记还是h2标记 我怎样才能做到这一点?以下是想法: $("p, h1, h2").each(function(index) { console.log("CSS Selector: ", $(this).cssSelectorName) })

我正在抓取一个网页以提取与特定CSS选择器相关的内容,如下所示:

$("p, h1, h2").each(function(index) {
   // Do stuff
})
现在,我想知道哪个选择器对应于返回的对象:我想知道它是
p
标记、
h1
标记还是
h2
标记

我怎样才能做到这一点?以下是想法:

$("p, h1, h2").each(function(index) {
   console.log("CSS Selector: ", $(this).cssSelectorName)
})
根据以下内容,您可以编写:

$("p, h1, h2").each(function(index, ele) {
    console.log("CSS Selector: ", ele.tagName);
})
不同的方法可以基于

$(“p,h1,h2”)。每个(函数(索引,ele){
log(“CSS选择器:”,ele.tagName.toLowerCase());
如果($(ele).is('p')){
console.log('这是一个段落')
}否则{
如果($(ele).is('h1')){
console.log('这是标题1')
}否则{
if($(ele).is('h2')){
console.log('这是标题2')
}
}
}
})

这是标题1
这是标题2
Lorem Ipsum只是印刷和排版行业的虚拟文本。
自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,
当一个不知名的印刷商拿着一个铅字厨房,把它拼凑成一个铅字
样本书。它不仅存活了五个世纪,而且还跨越了
电子排版,基本保持不变。它被大众化了
20世纪60年代,随着包含Lorem Ipsum的Letraset表的发布
段落,以及最近使用的桌面发布软件,如Aldus
PageMaker包括Lorem Ipsum的版本。

根据您可以编写的:

$("p, h1, h2").each(function(index, ele) {
    console.log("CSS Selector: ", ele.tagName);
})
不同的方法可以基于

$(“p,h1,h2”)。每个(函数(索引,ele){
log(“CSS选择器:”,ele.tagName.toLowerCase());
如果($(ele).is('p')){
console.log('这是一个段落')
}否则{
如果($(ele).is('h1')){
console.log('这是标题1')
}否则{
if($(ele).is('h2')){
console.log('这是标题2')
}
}
}
})

这是标题1
这是标题2
Lorem Ipsum只是印刷和排版行业的虚拟文本。
自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,
当一个不知名的印刷商拿着一个铅字厨房,把它拼凑成一个铅字
样本书。它不仅存活了五个世纪,而且还跨越了
电子排版,基本保持不变。它被大众化了
20世纪60年代,随着包含Lorem Ipsum的Letraset表的发布
段落,以及最近使用的桌面发布软件,如Aldus

PageMaker包括Lorem Ipsum的版本。

我认为您无法获得选择器。但是,由于您是按标记名选择的,所以您可以得到它

$("p, h1, h2").each(function() {
   console.log("CSS Selector: ", this.tagName)
});
如果按类选择,则可以测试:

$(".class1, .class2").each(function() {
    if ($(this).hasClass("class1")) {
        console.log("class1");
    } else {
        console.log("class2");
    }
});

我想你拿不到选择器。但是,由于您是按标记名选择的,所以您可以得到它

$("p, h1, h2").each(function() {
   console.log("CSS Selector: ", this.tagName)
});
如果按类选择,则可以测试:

$(".class1, .class2").each(function() {
    if ($(this).hasClass("class1")) {
        console.log("class1");
    } else {
        console.log("class2");
    }
});

如果您的选择器仅为标记名或类,则可以按照@gaetanoM或@Brmar的答案进行操作,但如果您将使用更复杂的选择器,则可以使用下面的代码

var selector = "p.first, h1, h2, p#amazing";
var selectors = selector.split(', ');
var jqObject = $(selector);

jqObject.each(function(index, el) {
    selectors.forEach(function(sel, i) {
        if (el.matches(sel)) {
            console.log(el, 'matching', sel);
        };
    });
});
这里唯一需要注意的是,在选择器字符串中,所有选择器都必须用逗号分隔
。正如您从代码中看到的那样,您得到了包含元素的jquery对象并对其进行迭代,在每次迭代中,您检查元素是否与选择器数组中的任何选择器匹配,如果匹配,则注销元素、单词
匹配
和选择器
.matches()
在这种情况下非常方便


如果您的选择器仅为标记名或类,您可以按照@gaetanoM或@Brmar的答案操作,但如果您将使用更复杂的选择器,则可以使用下面的代码

var selector = "p.first, h1, h2, p#amazing";
var selectors = selector.split(', ');
var jqObject = $(selector);

jqObject.each(function(index, el) {
    selectors.forEach(function(sel, i) {
        if (el.matches(sel)) {
            console.log(el, 'matching', sel);
        };
    });
});
这里唯一需要注意的是,在选择器字符串中,所有选择器都必须用逗号分隔
。正如您从代码中看到的那样,您得到了包含元素的jquery对象并对其进行迭代,在每次迭代中,您检查元素是否与选择器数组中的任何选择器匹配,如果匹配,则注销元素、单词
匹配
和选择器
.matches()
在这种情况下非常方便

查看,例如
this.tagName
查看,例如
this.tagName