Javascript 如何知道jQuery$([CSS选择器])方法中查询的选择器
我正在抓取一个网页以提取与特定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) })
$("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