Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用CSS选择器不排除跨文本_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何使用CSS选择器不排除跨文本

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")')

我在弄清楚如何正确使用:not选择器时遇到了一些问题。 我有一个包含menuitems的菜单,其中一个菜单项有一个“is selected”类,向用户显示他正在访问的当前页面

我想检索此项目的文本,不带徽章

Div结构

返回类似“OrderInvoier25”的内容

我尝试了以下方法仅检索文本“Orderinvoer”,但我真的不知道我做错了什么:

$('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();