0

特定のクラスを持つ div のみを表示し、そうでないものを非表示にしようとしています。この例では、クラスが「panel_profile」である div を表示し、「wood」div を非表示にしようとしています。なぜ機能しないのですか?

HTML

<form>
<div class="panel_profile"> 
Name: <input>Data</input>
</div>

<div class="panel_profile"> 
Name: <input>Data</input>
</div>

<div class="wood">  
Name: <input>Data</input>
</div>
</form>

JQuery(PHP変数をテストする正しいクラスに置き換えてみましたが、うまくいきませんでした)

$(document).ready(function(){
if ( $("div").hasClass("<?php echo $tablename; ?>") ) {
    $(".div").show();
} else {
    $(".div").hide();
}
}); 
4

3 に答える 3

2

このコードを試してください:

$(document).ready(function(){
    $("div").hide();
    $("div").each(function(){
        if($(this).hasClass('<?php echo $tablename; ?>'))
           $(this).show();
    });
}); 
于 2013-07-10T22:03:44.547 に答える
1

jqueryセレクターはコレクションを返しますが、実行すると

if ( $("div").hasClass("<?php echo $tablename; ?>") ) {

単一の div にそのクラスがあるかどうかのみを確認しています。代わりに、次のことができます。

$("div.panel_profile").show();
$("div.wood").hide();

コレクションに直接どの演算子を使用するか。

于 2013-07-10T22:04:11.250 に答える
1

ifまたは.hasClass()関数は必要ありません。

$(document).ready(function(){
   // hide all divs
   $("div").hide();
   // then show just the ones with the class
   $("div.<?php echo $tablename; ?>").show();
});

$("div.someclass")class を持つすべての div 要素を選択します"someclass"。PHPコードをこれと組み合わせることができます: $("div.<?php echo $tablename; ?>").

$(".div").show()andのセレクターにドットがあることに注意してください。これは、 div 要素ではなく、 class$(".div").hide()を持つ要素を探していたことを意味します。 "div"

if ( $("div").hasClass("<?php echo $tablename; ?>") )要素のいずれかにクラスがあるかどうかを.hasClass()返すため、要件に対して機能していませんでした。目的に使用するには、ループ内に配置する必要があります。true.hasClass()

更新:コメントから、この処理をフォーム内の div にのみ適用したいようです。もしそうなら、あなたはこれを行うことができます:

$(document).ready(function(){
   $("form").find("div").hide().filter(".<?php echo $tablename; ?>").show();
});

jQuery を使用してメソッドを連鎖させる方法を示すために、少し異なる方法でこれを行いました。上記は、フォーム要素を選択することを示しています (フォームに要素がある場合は id でこれを行うことができます。それ以外の場合は、ページ上のすべてのフォームが選択されます)。次に、そのフォーム内で.find()すべての div を非表示にしてから、. filter()その div のリストを、指定されたクラスを持つものだけに変更して表示します。

于 2013-07-10T22:10:02.753 に答える