2017-03-22 18 views
0

jQueryを効果的に使用する方法を学習していますが、ここでは最小限のコードで問題が発生しています。ハイパーリンクをクリックするとDOM要素が表示されます

$(".showHideLink").on("click", function() { 
var id = $(this).attr("id"); 
$("."+id+" comments").show(); 
}); 

理想的には、これは、クラス「ID」&「コメント」ショーを持つ要素になるだろう。これは評価フォームの一部で、適格な値を必要とする約60種類の項目がありますが、定量化情報はオプションですので、評価者が有効にしない限りtextareaを非表示にしました。

エラーが連結されているかどうか、またはマークが完全に欠落しているかどうかはわかりません。

もし私のエラーが発生している場所であるかどうかを確認するための参考リンクがあります。

<p class="showHide"><a class="showHideLink" id="1" href="#">Enter Comments</a></p> 

ここに私が「表示」しようとしている要素があります。

<p class="1 comments">Comments:<br><textarea cols="50" rows="3"></textarea></p> 

私は少し探してきましたが、私のニーズに合った答えで他の質問を見つけることができませんでした。ご協力いただきありがとうございます。

+0

'$(+ ID + " "" コメント。")ショー();'しかし、それはユニークだ場合、それはなど1、2、のようなクラスを与えるために非常に悪い考えです、クラスではなくidを使用します。 – dfsq

+0

'dfsq 'が述べたように、id連結セレクタは実際には有効ではない' $( "。1 comments") 'のように見えます。クラス' .1'の要素の子である' ' 。 '$(" .comments ")'を実行することによって、クラス "1"とクラス 'comments'の両方を持つ要素を意味します。 – Santi

+0

@dfsqありがとう、私は転記のために簡略化しました。数字の識別子には他の説明があります。 –

答えて

0

セレクタに基づいて<comment>要素を選択しています。クラス1のクラスがcommentsのクラス(.1.comments)を選択する必要があるため、代わりに$("." + id + ".comments")を使用する必要があります。

$(".showHideLink").on("click", function() { 
 
    var id = $(this).attr("id"); 
 
    $("." + id + ".comments").show(); 
 
});
.comments { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p class="showHide"><a class="showHideLink" id="1" href="#">Enter Comments</a></p> 
 
<p class="1 comments">Comments:<br><textarea cols="50" rows="3"></textarea></p>

関連する問題