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

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

我们来说明一下。 如果我让我们说下面的代码:

UniqueText

我需要知道如何以编程方式执行以下操作:

 getClassNameWhereText("UniqueText"); 

在这种情况下输出应该是:

 _className 

有没有办法做到这一点?

您可以为您的div保留一个ID,根据您的信息,您的文字将是唯一的。

 
UniqueText

并且js代码将是

 function getClassNameWhereText(text){ var className = $('#'+text).attr('class'); console.log(className); } 

更新:如果你想使用包含,那么你可以这样做,

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

JQuery :contains选择器选择元素具有特定文本但不完全正确。 例如

 $("div:contains(UniqueText)") 

选择两个底部div

 
UniqueText
UniqueText2

您可以使用.filter()按文本过滤所选元素。

 var className = $("*").filter(function(){ return $(this).text() == "UniqueText"; }).attr("class"); 
 var className = $("*").filter(function(){ return $(this).text() == "UniqueText"; }).attr("class"); console.log(className); 
  
UniqueText
UniqueText2

你可以使用:contains(word)

 var className = $( "div:contains('John')" ).attr("class"); console.log(className) 
  
John Resig
George Martin
Malcom John Sinclair
J. Ohn

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

  $( "div" ).each(function(){ if($(this).text() == "UniqueText"){ var output = $(this).attr('class'); $(".output").html(output); } }); 
  
UniqueText

这应该比使用jQuery更快(但要输入更多):

 var xpath = "//div[text()='UniqueText']"; var result = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE); var node = result.singleNodeValue; if (node) { console.log(node.className); } else { console.error("Not found!"); } 
  
UniqueText