2009-09-30 42 views
1

不知何故仍然无法完成我想要做的事情。它给了我点击循环中的最后一个值不知道为什么。在这里,我想要点击的在jquery ready函数中打印循环中的值

这里是我的代码:

$(document).ready(function() { 
    var link = $('a[id]').size(); 
    //alert(link); 
    var i=1; 
    while (i<=link) 
    { 
$('#payment_'+i).click(function(){ 
    //alert($("#pro_path_"+i).val()); 
    $.post("<?php echo $base; ?>form/setpropath/", {pro_path: $("#pro_path_"+i).val()}, function(data){ 
    //alert(data); 
    $("#container").html(data);  
    }); 
}); 
i++; 
    } 
}); 

这里placement_1placement_2 ....是href S和pro_path是我想要发布,该值在隐藏的输入类型与定义的值编号为pro_path_1pro_path_2等,这里的href对于不同的用户有所不同,所以在代码中我有$('a[id]').size()。不知何故,当执行和警报我得到循环中的最后一个值,我不希望这样,它应该是那个被点击的值。

我认为onready事件它应该已经解析了文档和循环内的值 我不确定我出错的地方。请帮助我获得预期的结果。

感谢,所有

+0

我看不到任何placement_1,placement_2 - 您的意思是payment_1,payment_2? – 2009-09-30 13:36:59

+0

是的我的意思是payment_1,payment_2 ...任何方式,我通过karim79得到了soln – 2009-10-01 06:53:18

回答

1

我会建议使用startsWith属性过滤器和摆脱while循环:

$(document).ready(function() { 
    $('a[id^=payment_]').each(function() { 

     //extract the number from the current id 
     var num = $(this).attr('id').split('_')[1]; 

     $(this).click(function(){  
      $.post("<?php echo $base; ?>form/setpropath/", {pro_path: $("#pro_path_" + num).val()},function(data){ 
       $("#container").html(data);  
      }); 
     }); 
    }); 
}); 
+0

嘿感谢你的解决它的工作就像一个魅力我没有在代码中的单一变化... – 2009-10-01 04:59:51

0

你必须使用的i本地副本:

$('#payment_'+i).click(function(){ 
    var i = i; // copies global i to local i 
    $.post("<?php echo $base; ?>form/setpropath/", {pro_path: $("#pro_path_"+i).val()}, function(data){ 
     $("#container").html(data); 
    }); 
}); 

否则回调函数将使用全球i

0

这里是多/并行异步请求的说明:

既然你是通过AJAX发送多个请求您应该记住浏览器只支持2个并发请求。

因此,您只能得到最后一次请求的回复是很自然的。

+0

他不发送同时请求,而是他绑定了多个点击处理程序,每个处理程序具有不同的$ .post参数。 – karim79 2009-09-30 14:08:44

0

如果添加了类到每个环节,做这样的事情

$(function() { 
$('.paymentbutton').click(function(e) { 
    $.post("<?php echo $base; ?>form/setpropath/", 
    {pro_path: $(this).val()}, 
    function(data) { 
    $("#container").html(data); 
    }); 
    }); 
}); 
}); 

注意使用$(本),以获得被点击的链接是什么。