2012-05-04 57 views
0

我做的事情,如后续:发送多种形式一个与jQuery

$.each(data2, function(key2, val2) { 
    $('#posts').append('<div class="send_comment" align="right">'); 
    $('#posts').append('<input type="hidden" class="com_post_id" value="'+i+'"><br /\>'); 
    $('#posts').append('Author: <input type="text" class="com_author"><br /\>'); 
    $('#posts').append('Img: <input type="text" class="com_img"><br /\>'); 
    $('#posts').append('Text: <input type="text" class="com_text"><br /\>'); 
    $('#posts').append('<button class="new_comment">Send</button>'); 
    $('#posts').append('</div>'); 
}); 

我怎样才能把这些领域与$.post?用$(this),我可以得到点击元素,但呢?

+0

你需要发送一个事件后,像点击?您可以使用json发送数据... –

回答

0

由于它动态地被注入元素,你应该绑定使用jQuery on

$(function(){ 
     $(".send_comment").on("click",".new_comment",function(e){ 
     e.preventDefault(); 
     var item=$(this); 
     var postId=item.parent().find(".com_post_id"); 
     var author=item.parent().find(".com_author"); 
     var msg=item.parent().find(".com_text"); 

     $.post("yourPage.php", { id : postId, author:author ,msg:msg },function(result){ 
      //do whatever with result 
       alert(result); 
     }); 

     }); 
    }); 

http://api.jquery.com/on/

jQuery的on对当前和未来元素将工作的功能。

+0

它完美地工作,谢谢。 –

+0

@GiovanniCapuano:很高兴它等着你。 – Shyju

0

data = $(this).closest('form').serialize()

+0

确保字段具有'name'属性,否则您将获得空值! –

0

我总是发现从jQueryUI的站点模式表单例子为如何从形式发送数据的一个很好的例子:http://jqueryui.com/demos/dialog/#modal-form

本质上给你的域的ID,那么:

var author = $("#author"), 
    image = $("#image"), 
    text = $("#text"), 
    allFields = $([]).add(author).add(image).add(text); 

然后用交:

$.post("your_url_that_processes_data",allFields, function(data){ 
    // do something with data 
}); 

如果您有多种形式稍有不同,有很多方法可以解决这个问题。我建议或者更改动作网址,或者从某些DOM元素中获取“id”,方法如何。也许你可以在你的脚本中将表单ID更改为:"form-".id,然后在提交之前阅读它。

我可以尝试帮助更详细的用例吗?

+0

我已经用Shyju的解决方案解决了问题,但也感谢你的支持。 –