jQuery如何在弹出后调用当前/正确的值

时间:2012-12-25 09:40:32

标签: php jquery

基本上我有一个由foreach循环组成的文件列表,除了名称之外,它们都具有相同的代码,每个文件都带有file_id。我的问题是当我添加一个点击弹出事件时,我失去了获取当前$(".flag")属性名称的能力。有没有办法可以一路传递它,所以我最终可以使用它?

PHP :(用户可以看到他们可以点击的链接...记住,foreach循环中有几个这样的结果。我正在展示一个例子)

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:在提交时我需要通过ajax发送当前的$files['id']和textarea值。 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;
});

1 个答案:

答案 0 :(得分:0)

您可以save .flag链接为clicked,然后再使用它。

var flagClicked;

$(".flag").live('click', function() {
    $(".pop").show("slow"); 
    flagClicked = $(this);
    return false;
});

$("#message_submit").on("click", function(e){
      var fileID = flagClicked.attr("name");
       ....