显示隐藏脚本在JQuery中不起作用?

时间:2013-01-22 01:50:40

标签: javascript jquery html

我知道有很多方法可以在jquery中隐藏show show,但我只是想知道为什么下面没有工作。在尝试调试

时,我将[object Object]作为警报
alert($("div.$(this).attr('class')"))

我的脚本如下所示:

$(".blocks").hide(); 
$("div.$(this).attr('class')").show();

任何想法,如何解决这个问题,或确保alert($("div.$(this).attr('class')"))返回类名而不是对象对象。

4 个答案:

答案 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属性设置为空字符串使其使用该元素的默认值。