如何使用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 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