如何使用javascript/jquery获取具有特定文本的元素的类名?

如何使用javascript/jquery获取具有特定文本的元素的类名?,javascript,jquery,html,text,classname,Javascript,Jquery,Html,Text,Classname,我需要一种JavaScript或jQuery方法,通过它包含的文本来提取DIV元素的类名 让我们举例说明。如果我有下面的代码: <div class="_className">UniqueText</div> 在这种情况下,输出应为: _className 有办法做到这一点吗?您可以使用 var className=$(“div:contains('John')).attr(“class”); console.log(className) 作者 乔治马丁 马尔科姆

我需要一种JavaScript或jQuery方法,通过它包含的文本来提取DIV元素的类名

让我们举例说明。如果我有下面的代码:

<div class="_className">UniqueText</div>
在这种情况下,输出应为:

_className
有办法做到这一点吗?

您可以使用

var className=$(“div:contains('John')).attr(“class”);
console.log(className)

作者
乔治马丁
马尔科姆·约翰·辛克莱
J.Ohn
您可以使用

var className=$(“div:contains('John')).attr(“class”);
console.log(className)

作者
乔治马丁
马尔科姆·约翰·辛克莱
J.Ohn
JQuery选择器select元素有特定的文本,但并不精确。比如说

$("div:contains(UniqueText)")
选择两个底部div

<div class="_className">UniqueText</div>
<div class="_className2">UniqueText2</div>
var className=$(“*”).filter(函数(){
返回$(this).text()=“UniqueText”;
}).attr(“类别”);
log(类名)

唯一文本
UniqueText2
JQuery选择器select元素具有特定的文本,但并不精确。比如说

$("div:contains(UniqueText)")
选择两个底部div

<div class="_className">UniqueText</div>
<div class="_className2">UniqueText2</div>
var className=$(“*”).filter(函数(){
返回$(this).text()=“UniqueText”;
}).attr(“类别”);
log(类名)

唯一文本

UniqueText2
您可以为您的div保留一个id,根据您的信息,您的文本将是唯一的

<div id="UniqueText" class="_className">UniqueText</div>
更新:如果要使用contains 然后你可以这样做

function getClassNameWhereText(text){
    var val = document.getElementById(text).value;
    if(text.indexOf(val)>=0){
        var className = $('#'+text).attr('class');
        console.log(className);
    }

}

您可以为您的div保留一个id,根据您的信息,您的文本将是唯一的

<div id="UniqueText" class="_className">UniqueText</div>
更新:如果要使用contains 然后你可以这样做

function getClassNameWhereText(text){
    var val = document.getElementById(text).value;
    if(text.indexOf(val)>=0){
        var className = $('#'+text).attr('class');
        console.log(className);
    }

}

通过使用每个函数获取所有
div
,您可以搜索所有div,并设置一个条件,使
div
的值等于您要查找的特定文本。然后使用
.attr('class')
获取类名

$(“div”)。每个(函数(){
如果($(this.text()=“UniqueText”){
var输出=$(this.attr('class');
$(“.output”).html(输出);
}
});

唯一文本

通过使用每个函数获取所有
div
,您可以搜索所有div,并设置一个条件,使
div
的值等于您要查找的特定文本。然后使用
.attr('class')
获取类名

$(“div”)。每个(函数(){
如果($(this.text()=“UniqueText”){
var输出=$(this.attr('class');
$(“.output”).html(输出);
}
});

唯一文本

这应该比使用jQuery更快(但要比键入速度快一点):

var xpath=“//div[text()='UniqueText']”;
var result=document.evaluate(xpath,
文档,null,XPathResult.FIRST\u ORDERED\u NODE\u TYPE);
var node=result.singleNodeValue;
如果(节点){
log(node.className);
}否则{
控制台。错误(“未找到!”);
}


UniqueText
这应该比使用jQuery更快(但要比键入的速度快一点):

var xpath=“//div[text()='UniqueText']”;
var result=document.evaluate(xpath,
文档,null,XPathResult.FIRST\u ORDERED\u NODE\u TYPE);
var node=result.singleNodeValue;
如果(节点){
log(node.className);
}否则{
控制台。错误(“未找到!”);
}



UniqueText
我认为该线程可能满足您的需要我认为该线程可能满足您的需要,但如果该div被包装在任何其他div中,它也会返回包含文本的div的任何祖先。我需要知道类名。如何输出包含唯一文本的类的名称?更改后,它将返回类名称,直到失败,例如。解决方法可以是使用
$(“div:contains('John'):not(:has(:contains('John'))))”
,但仍然
:contains()
不是一个严格匹配的过滤器,如果您正在搜索一些文本,比如
John Bob
,其中单词是分开的
John
Bob
,它仍然很有用,但是也可以使用
:last
,但是如果这个div被包装在任何其他div中,它也会返回包含文本的任何div的祖先。我需要知道这个类名称如何输出包含唯一文本的类的名称?更改后,它将返回类名称,直到失败,例如。解决方法可以是使用
$(“div:contains('John'):not(:has(:contains('John'))))”
,但仍然
:contains()
不是一个严格匹配的过滤器如果你搜索一些文本,比如
John Bob
,其中单词是分开的
John
Bob
,仍然可以使用
:last
我喜欢这种方式,因为它是纯JavaScript,不依赖jQuery。我已经在这个平台上测试过了:。我看到的唯一问题是它没有输出所有事件。你会如何循环遍历所有结果?如果你喜欢纯js,那么为什么要用jQuery标记你的问题?@uncible,我要求使用JavaScript或jQuery,但如果有一个纯JavaScript单行程序可以做到这一点,我为什么要加载jQuery并扩大脚本的大小。请不要生气,但我认为这是实现结果的最优雅的方式。@jj您可以使用
document.getElementsByTagName(“div”)迭代您的all div这个。注意,这只适用于简单的
div
,不适用于嵌套的
div
。您在代码中使用了jquery,但通过javascript选择了元素!我喜欢这种方式,因为它是纯JavaScript,不依赖jQuery。我已经在这个平台上测试过了:。我看到的唯一问题是它没有输出所有事件。你会如何循环遍历所有结果?如果你喜欢纯js,那么为什么要用jQuery标记你的问题?@uncible,我要求使用JavaScript或jQuery,但如果有一个纯JavaScript单行程序可以做到这一点,我为什么要加载jQuery并扩大脚本的大小。请不要生气,但在我看来,这是实现t的最优雅的方式