0

我知道有很多方法可以在 jquery 中进行显示隐藏,但我只是想知道为什么下面不起作用。我在尝试调试时收到 [object Object] 作为警报

alert($("div.$(this).attr('class')"))

我的脚本如下所示:

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

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

4

4 回答 4

5

你拥有它的方式,$(this).attr('class')实际上就是它所说的。这只是一个字符串。

您需要将其连接起来:

$("div." + $(this).attr('class')).show();
于 2013-01-22T01:53:12.233 回答
3

你不能像这样嵌套$(this)在你的选择器中。

$("div." + $(this).attr('class')).show();
于 2013-01-22T01:53:13.157 回答
3

您应该连接字符串:

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

或者:

$("div." + this.className).show();

请注意,对象的alert()返回值,请改用。[Object object]console.log()

于 2013-01-22T01:53:23.483 回答
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属性设置为空字符串使其使用该元素的默认值。

于 2013-01-22T01:54:48.967 回答