コントローラーに ajax 呼び出しを行うビューに JavaScript があります。データをループして、テーブルを作成しています。私がする必要があるのは、テーブル内の各アイテムに対してハイパーリンクを作成し、ユーザーがいずれかのリンクをクリックしたときに、リンクの値をテキスト ボックスに入力することです。
これまでのところ、json データをループしてテーブルを作成するコードは機能しています。コードのスニペットを次に示します。
htmlstring = htmlstring + "<th>VlanId</th><th>Name</th>";
for(i = 0; i < returnDataFromController.length; i++) {
//alert(returnDataFromController[i].VlanId);
htmlstring = htmlstring + "<tr><td><a href=''>"+returnDataFromController[i].VlanId+"</a></td><td>"+ returnDataFromController[i].Name+"</td></tr>";
}
submitFormHTML = "<input type='text' id='newVlanID' style='width:5em;height:1.5em'/> <button class='btn' id='saveVlan' style='width:10em;height:2em'>Reassign Vlan</button>";
$('#clientajaxcontainer').html(htmlstring);
$('#newvlanform').html(submitFormHTML);
やりたいことを達成するために、各タグに一意の名前を付ける必要がありますか、それともクラスに割り当てるだけでよいですか? すべてのタグに特定のクラス (例) classX を割り当ててから、classX タイプのタグのクリック イベント用の jquery ハンドラを記述できればよいのですが。これは可能ですか?この投稿を読んでいただきありがとうございます。
編集:
jquery バージョン 1.8 を使用しています。上記のコードに加えて、クリック イベントに基づいてテキスト ボックスを自動入力するように、さらに JavaScript を追加しました。
$('clientajaxcontainer').on("click", "td:first-child a", function(ev) {
ev.preventDefault();
$('#newVlanID').val($(this).text());
});
私が正しく理解していれば、 ev.preventDefault() はブラウザが別のページにリダイレクトするのを止めるはずです。しかし、それは機能していないようです。ハイパーリンクをクリックすると、現在のページがリロードされます。