ユーザーが(ボタンをクリックすると)追加される要素があり、p要素とpre要素が追加されます。 p要素が "query-p"のクラスを持つ間、pre要素は不可視であり、クラスを持たない。jqueryでオブジェクトのクラスを切り替える
私がしようとしているのは、ユーザーが "data-id = 'p1'"を持つap要素をクリックするたびに、 "data-id"を持つpre要素に "show" = 'pre1' "または例えば" data-id = 'p2' "でap要素をクリックすると、" data-id = 'pre2' "というようにpre要素に" show "クラスを追加します。 (それが役立つかもしれないので、私はここにそれを置く私が働いている要素は、このコードではありません)これは私のHTMLで
$(function() {
$("p[data-id]").on("click", function() {
var idFound = $(this).data("id");
if ($("p[data-id]").attr("class") == "query-p" && $("pre[data-id]").attr("class") != "show") {
$("pre[data-id]").attr("class", "show");
}
else if ($("pre[data-id]").attr("class") == "show") {
$("pre[data-id]").removeAttr("class");
}
});
});
:
は、これは私のjqueryのコードであるhttps://pastebin.com/eKVbUZHQ
これは私の他のjavascriptファイル(主に私が使用している要素を追加するコードを含んでいます):https://pastebin.com/yEZuuhA8
問題は私のコードは、それは。
例:
p要素1:ID = "ディスプレイPRE1" クラス= "クエリP" データID = "P1" プレ素子1:ID =
私は新しい要素を追加しました"pre-a1" data-id = "pre1"
p要素2:id = "display-pre2" class = "query-p" data-id = "p2" pre要素2:id = "display-pre-a2" data-id = "pre2"
pre要素は「display: 'none'」で非表示になっています。 "show"クラスのすべての要素には、 "display: 'block'"があります。 pre要素にはクラスがありません。
最初のp要素をクリックするたびに、pre要素1とpre要素2の両方にクラス「show」が追加されるため、クリックすると「display: 'block'」になりますもう一度前の要素の両方を隠す。
これは少し役に立ちます。
質問( "**なぜこのコードは動作しない**?")必要な動作、*特定の問題またはエラー*、*それを再現するのに必要な最短コード**を質問自体に含める必要があります**。 **明確な問題文**のない質問は他の読者には役に立たない。参照:[最小限で完全で検証可能なサンプルの作成方法](https://stackoverflow.com/help/mcve) – Andreas
私はあなたが 'id'に属性値を格納する変数を使用していないことに気付きました。ある要素にjQueryの '.hasClass()'メソッドがあるかどうかを調べることができます。 '.attr()'を使って 'data-id'の属性値を格納することができます(' string'を返します)。あなたの選択をより簡単にするために、 'p'と' pre'要素の両方に同じ 'data-id'属性を使うことをお勧めします。例えば、' if($( "pre 'data-id ')")。attr( "data-id")== dataID) '*ここで、' dataID'はクリックされた 'p'要素の' data-id'属性の格納された文字列値と等しくなります。 – UncaughtTypeError
I申し訳ありません、私は本当にあなたを理解することができないので、jqueryには非常に新しいです、あなたは私のためにそれを単純化できますか? – beannshie