基本的に、各ファイルの file_id を持つ名前を除いてすべて同じコードを持つ foreach ループから構成されるファイルのリストがあります。私の問題は、クリック時のポップアップ イベントを追加すると、現在の$(".flag")
属性名を取得できなくなることです。最後に使用できるように途中で渡す方法はありますか?
PHP: (ユーザーにはクリックできるリンクが表示されます... foreach ループの結果としてこれらのリンクがいくつかあることを思い出してください。例として 1 つを示しています)
echo "<td><a href='#' class='flag' name='$files[id]' >Click Here</a> ( $files[nums] )</td>";
jQuery:(クリックするとこれが起こります)
$(".flag").live('click', function() {
$(".pop").show("slow");
return false;
});
HTML: この div がポップアップします
<div class="pop">
<form method="post" id="new_folder" >
<p><label for="folder">Reason for Reporting?</label><textarea id="report_reason" name="report_reason" maxlenght="100" style="resize:none" cols="30" rows="5">Please limit your response to 100 characters.</textarea></p>
<p><input type="submit" value="Submit" id="message_submit"/> or <a class="close" href="/">Cancel</a></p>
</form>
</div>
jQuery: 送信時に、現在の$files['id']
値とテキストエリアの値を ajax 経由で送信する必要があります。textarea は正しいデータを送信しますが$(".flag")
、選択したリンクの ID ではなく、foreach ループから最初にフェッチされた ID の ID です。
$("#message_submit").on("click", function(e){
var fileID = $(".flag").attr("name");
var text = $("#report_reason").val();
$(".pop").hide("slow");
$.ajax({
url: '<?php echo base_url().'home/report_file';?>',
type: 'POST',
data: { val: fileID, val2: text },
dataType: 'json',
success: function(output_string){
$(".success").text("You have flagged this file!!").show().css({"color" : "green", "margin-top" : "10px"});
$(".success").fadeOut(10000);
}
});
return false;
});