我试图弄清楚是否可以在变量中选择包含2个以上单词的div作为类名。
即,$("div[class='LIKES & DISLIKES']")
这工作正常,但问题是我在变量中有这个类名LIKES & DISLIKES
,我不能在$("div[class='+ variable +']")
中使用变量。
我试了一下
var element = document.getElementsByClassName(variable)
但这给了我HTML集合,我不知道如何从中检索我的div元素。
所以我在类名中定义了一个文本,所以我可以通过使用来隐藏所有文本
$("[class*='showtab']").hide()
并显示已点击锚标记的类$(".showtab"+lab).show()
这个工作正常,直到两个单词的类名,即Style cat
,但它不适用于超过3个单词的类名,即LIKES & DISLIKES
这适用于$('.showtabStyle.cat')
但不适用于$('.showtabLIKES.&.DISLIKES')
但我有LIKES。& .DISLIKES在变量中我将其附加到文本showtab
我的代码做了类似的事情
$(document).on("click", ".nav-link-in", function (e){
var labtemp = $(this).text().trim().replace(/\s+/g, ".");
var lab = labtemp.replace(/\([\s\d\/]+\)/, ""); // this to remove extra space for `LIKES & DISLIKES` and replace it with .this gives `LIKES.&.DISLIKES` as i am removing number within bracket also
$("[class*='showtab']").hide();
$(".showtab"+lab).show();
}
此代码适用于一个/两个单词的类名,但不适用于两个以上的单词。
$("div[class='showtabLIKES & DISLIKES']")
效果很好但正如我所说,我在变量中有类名LIKES & DISLIKES
。
答案 0 :(得分:1)
单个类名称不能包含多个单词,用空格分隔。那是不允许的。所以如果你说你有一个班级"喜欢&不喜欢",这是无效的。这些可能是三个类(如果&
是有效的类名,不确定)。如果你的意思是你有两个类的两个变量,并且你想要选择具有这两个类的元素,那么你应该这样做:
$("."+var1+"."+var2)
使用template literals,您甚至可以:
$(`.${var1}.${var2}`)