[解決済み] アンカーのonClick()処理にjQuery clickを使用する。
質問
以下のように、動的に生成されるアンカータグのセットをforループで使用しています。
<div id = "solTitle"> <a href = "#" id = "' + tagId + '" onClick = "openSolution();"> ' + solTitle + '</a></div> <br>';
このコードが実行されると、あるケースのhtml出力は次のようになります。
<div id = "solTitle"> <a href = "#" id = "solution0" onClick = "openSolution();">Solution0 </a></div> <br>
<div id = "solTitle"> <a href = "#" id = "solution1" onClick = "openSolution();">Solution1 </a></div> <br>
さて、上記のリンクをクリックすると、異なるテキストが表示されるようにしたいと思います。 openSolution()はこんな感じです。
function openSolution() {
alert('here');
$('#solTitle a').click(function(evt) {
evt.preventDefault();
alert('here in');
var divId = 'summary' + $(this).attr('id');
document.getElementById(divId).className = '';
});
}
実行し、どちらかのリンクをクリックしても、jqueryのクリックハンドラ内にはフローが来ません。 上記のアラートが使用されていることで確認しました。アラート'here'が表示されるだけで、アラート'here in'は表示されません。 2回目にリンクをクリックすると、すべてがdivIdの正しい値で完全に動作します。
どうすればいいですか?
最初にリンクをクリックしたときに
openSolution
関数が実行されます。この関数は
click
イベントハンドラは実行されません。2回目にリンクをクリックしたときは
click
イベントハンドラが実行されます。
あなたのしていることは、そもそもjQueryを使う意味を失っているように思えます。そもそも、クリックイベントを要素にバインドするだけで良いのでは?
$(document).ready(function() {
$("#solTitle a").click(function() {
//Do stuff when clicked
});
});
この方法では
onClick
属性を使用します。
また、複数の要素に同じ
id
の値 ("solTitle") は無効です。何か他の共通の特性(
class
は通常良い選択肢です)。の出現をすべて変更すると
id="solTitle"
から
class="solTitle"
を使用すると、クラスセレクタを使用することができます。
$(".solTitle a")
重複しているため
id
の値が無効であるため、同じ
id
. 何が起こりがちかというと、その
id
が使用され、それ以外は無視されます。
関連
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み】エラー:リクエストのエンティティが大きすぎる
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】SyntaxError: 期待された式が、'<'を得た。
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする