我知道有很多方法可以在jquery中隐藏show show,但我只是想知道为什么下面没有工作。在尝试调试
时,我将[object Object]作为警报alert($("div.$(this).attr('class')"))
我的脚本如下所示:
$(".blocks").hide();
$("div.$(this).attr('class')").show();
任何想法,如何解决这个问题,或确保alert($("div.$(this).attr('class')"))
返回类名而不是对象对象。
答案 0 :(得分:5)
你拥有它的方式,$(this).attr('class')
实际上就是它所说的。这只是一个字符串。
你需要连接它:
$("div." + $(this).attr('class')).show();
答案 1 :(得分:3)
你不能将$(this)
嵌套在你的选择器中。
$("div." + $(this).attr('class')).show();
答案 2 :(得分:3)
你应该连接字符串:
$("div." + $(this).attr('class')).show();
或:
$("div." + this.className).show();
请注意,alert()
会为对象返回[Object object]
,而是使用console.log()
。
答案 3 :(得分:1)
只是为了与众不同......
$("div." + this.className).show();
如果你没有jQuery ......
[].forEach.call(document.querySelectorAll("div." + className), function(element) {
element.style.display = "";
});
如果你被困在旧浏览器的土地上......
var div = document.getElementsByTagName("div");
for (var i = 0, len = div.length; i < div; i++) {
if (div[i].className == className) {
div[i].style.display = "";
}
}
将display
属性设置为空字符串使其使用该元素的默认值。