Javascript 如何使用CSS选择器不排除跨文本
我在弄清楚如何正确使用:not选择器时遇到了一些问题。 我有一个包含menuitems的菜单,其中一个菜单项有一个“is selected”类,向用户显示他正在访问的当前页面 我想检索此项目的文本,不带徽章 Div结构 返回类似“OrderInvoier25”的内容 我尝试了以下方法仅检索文本“Orderinvoer”,但我真的不知道我做错了什么:Javascript 如何使用CSS选择器不排除跨文本,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我在弄清楚如何正确使用:not选择器时遇到了一些问题。 我有一个包含menuitems的菜单,其中一个菜单项有一个“is selected”类,向用户显示他正在访问的当前页面 我想检索此项目的文本,不带徽章 Div结构 返回类似“OrderInvoier25”的内容 我尝试了以下方法仅检索文本“Orderinvoer”,但我真的不知道我做错了什么: $('div.a-TreeView-content.is-selected > a span:not(".cb-Menu-badge")')
$('div.a-TreeView-content.is-selected > a span:not(".cb-Menu-badge")').text()
$('div.a-TreeView-content.is-selected > a :not(span)').text()
$('div.a-TreeView-content.is-selected > a:not(".cb-Menu-badge")').text()
$('div.a-TreeView-content.is-selected :not(".cb-Menu-badge")').text()
试试这个
$('div.a-TreeView-content.is-selected > a')
.clone()
.children()
.remove()
.end()
.text();
.clone()
克隆所选元素
.children()
从克隆的元素中选择子元素
.remove()
删除以前选择的子项
.end()
再次选择所选元素
.text()
从没有子元素的元素中获取文本
$('div.a-TreeView-content.is-selected > a')
.clone()
.children()
.remove()
.end()
.text();
.clone()
克隆所选元素
.children()
从克隆的元素中选择子元素
.remove()
删除以前选择的子项
.end()
再次选择所选元素
.text()
从没有子元素的元素获取文本您可以使用replace()
删除.cb菜单徽章
文本和trim()
删除额外空间
堆栈片段
var-activeMenuItem=$('div.a-TreeView-content.is-selected>a').text().replace($('cb-Menu-badge').text(),'.trim();
日志(activeMenuItem)代码>
订购发票人
25
您可以使用replace()
删除.cb菜单徽章
文本和trim()
删除额外空间
堆栈片段
var-activeMenuItem=$('div.a-TreeView-content.is-selected>a').text().replace($('cb-Menu-badge').text(),'.trim();
日志(activeMenuItem)代码>
订购发票人
25
选择中的第一个文本节点。
a
$(".is-selected a").contents().get(0).nodeValue
var selected=$(“.is selected a”).contents().get(0).nodeValue;
console.log(选中)代码>
订购发票人
25
选择中的第一个文本节点。
a
$(".is-selected a").contents().get(0).nodeValue
var selected=$(“.is selected a”).contents().get(0).nodeValue;
console.log(选中)代码>
订购发票人
25
通过使用:not()选择器,您试图选择一个非跨度类型或没有cb菜单徽章类的锚定标记。因此,它总是选择锚定标记,并提供其内部的文本。通过如下所示单独选择其第一个内容,可以将跨度留在锚定标记内。阅读更多关于
上面的链接有更多的例子,如果您将文本放在里面,比如'text1text2'
,那么这些例子将对您有所帮助。通过使用:not()选择器,您将尝试选择一个非span类型或没有cb Menu badge类的锚定标记。因此,它总是选择锚定标记,并提供其内部的文本。通过如下所示单独选择其第一个内容,可以将跨度留在锚定标记内。阅读更多关于
上面的链接有更多的例子可以帮助你,如果你有你的文本在里面,比如'text1text2'
,也许这个页面是有帮助的。你可以通过在Orderinvoer周围加上一个像cb菜单标题这样的类来让你的生活变得简单一些。也许这个页面是有帮助的你可以通过使用类似cb Menu的类在Orderinvoer周围放置一个范围-title@Elvira)很难只选择一个答案。。我喜欢这个,因为它比Bhuwan的更好,我也在Google Tag Manager中试用过这个,这个很有效。感谢您对完整代码的解释。因为可读性,我更喜欢布旺斯。@埃尔维拉,是的:)很难只选择一个答案。。我喜欢这个,因为它比Bhuwan的更好,我也在Google Tag Manager中试用过这个,这个很有效。感谢您对完整代码的解释。我更喜欢Bhuwans,因为它的可读性。
$($('div.a-TreeView-content.is-selected > a').contents()[0]).text();