0

jqueryでshow hideを行う方法はたくさんあることは知っていますが、なぜ以下が機能しないのか疑問に思っています。デバッグしようとすると、アラートとして [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 に答える