日期:2014-05-16  浏览次数:20393 次

jquery同名class的.live('click',function(){});问题
本帖最后由 qq37431300 于 2013-10-14 22:30:58 编辑
html代码:

<div class="myfrom">
<div class="myInput">
<input class="proid" type="text" name="goods_id1" value="">
</div>
<input class="myBtn" type="submit" value="提交">
</div>
<div class="myfrom">
<div class="myInput">
<input class="proid" type="text" name="goods_id2" value="">
</div>
<input class="myBtn" type="submit" value="提交">
</div>


jQuery代码:
$(".myBtn").live('click',function(){
var goods_id = $(this).parents(".myInput").find('#proid2').val();
alert(goods_id);
});


我有2个同名的class="myBtn" ,用jquery怎样才能做到我鼠标点击哪个时就能提交它上面的 name="goods_id" 的value值过去呢?

我试过用
var goods_id = $(this).parents(".myInput").find('#proid2').val();
alert(goods_id);

这样都获取不到
name="goods_id2" value=""
提交过去的值。

好像它只从页面的第一个 class="myBtn" 找一次,不会一直跑完整个页面。

------解决方案--------------------
var goods_id = $(this).parents(".myfrom").find('.proid').val();

------解决方案--------------------
$(this).parents(".myInput").find('#proid2').val()里面find('#proid2')使用的是id选择器,而html里面没有一个元素的id是proid2,用错了选择器,应该是用类选择器,find('.proid')
应该这样写
var goods_id = $(this).parents(".myInput").find('.proid').val();

还可以这样写
var goods_id = $(this).prev().find('.proid').val();

减少DOM查找次数
------解决方案--------------------
$(".myBtn").live('click',function(){
var goods_id = $(this).parents(".myfrom").find('.proid').val();
alert(goods_id);
});

parent选择错了,另外find用input.proid,不要用id号选择。

在线测试 http://jsfiddle.net/hPrgz/