code> '); } $(document).ready(function(){ $( '。openembed')。click(function(){ generateCode(); var answerid = $( '。openembed')。attr( 'id'); $( '#box')。show(); falseを返します。 }); $( '#embed')。click(function(e){ e.stopPropagation() }); $(document).click(function(){ $( '#box')。hide() }); }); 私のマークアップは次のとおりです。 埋め込み 埋め込み
2021-01-04 08:13:35
あなたの問題はここにあります: $( '。openembed') 一致した要素の配列を返します。代わりに、クリックした要素のみを選択する必要があります。 $( '。openembed')は、このクラスを持つすべての要素にクリックイベントを割り当てると正しく機能します。しかしその一方で、どちらがクリックされたかはわかりません。 しかし、幸いなことに、ハンドラー関数クリックの本体で$(this)を呼び出すことができます。 $(this)は、現在の(およびクリックされた要素)を返します。 // var answerid = $( '。openembed')。attr( 'id'); // 違う var answerid = $(this).attr( 'id'); //正解 //これでgenerateCodeを呼び出すことができます generateCode(answerid); もう1つのエラーは、generateCode関数の本体です。ここで、選択した要素のIDを渡す必要があります。これは正しい実装です。 関数generateCode(answerid){ if($( '#embed input [name = "comments"]:checked')。length> 0 == true){ var comment = "&comments = 1"; } そうしないと { var comment = ""; } $( "#embedcode")。html( '