2014-05-23 60 views
0

输入能否请您看看下面的代码,让我知道为什么我不能够使用this.id获得所选无线电的ID?问题在里面选择一个div

<div id="pay" class="btn-group" data-toggle="buttons"> 
    <label class="btn btn-primary"> 
     <input type="radio" name="mode" id="option1"> Cash 
    </label> 
    <label class="btn btn-primary"> 
     <input type="radio" name="mode" id="option2"> Cheque 
    </label> 
</div> 

<script> 
$("#pay input:radio").on('click',function(){ 
alert(this.id); 
}); 
</script> 

感谢

+5

在这里工作:http://jsfiddle.net/gt4Qh/ – tymeJV

+0

任何错误控制台? –

+0

你有什么错误吗? – PeterKA

回答

0

确保一旦DOM准备好执行jQuery代码:

$(document).ready(function() { 
    // All your function calls, self-invoked functions, etc 
    // Also you define your event handlers here 
}); 

docs有关.ready(handler)

指定函数来执行当DOM完全加载时

然后,你需要变换this成一个jQuery对象访问它的方法,例如.attr()像这样:$(this)

由于jQuery版本1.7,您可以使用.on()函数使用事件委托。

再次docs

附加的事件处理函数的一个或多个事件到 选择的元素。

<script> 
    $(document).ready(function() { 
     $(document).on('click', '#pay input:radio', function() { 
      // Instead of using alert(), use the console for debugging 
      window.console.log($(this).attr('id')); 
     }); 
    }); 
</script> 
0

尝试使用

$(this).attr("id"),而不是this.id

+0

你为什么认为这会有所作为? –

0

这将工作;

$(function(){ 

    $(document).on('click', '#pay input:radio', function(){ 

     alert($(this).prop('id')) 

    }); 


}) 
+0

*为什么?*您所做的唯一改变是使检索'id' *更贵*,有点(虽然幅度不大)慢的过程。 –

1

如果发布的代码,其实全部您的jQuery的,你只是忘记了使用文档准备处理程序:

$(document).ready(function(){ 
    // your code should be in here 
}); 

或者你可以确保你的<script>是前放置收盘</body>标记,这两个方法可确保页面内容加载之前和现在在页面尝试结合事件处理程序。

+0

+1我同意的Cuz OP的代码可以提醒从小提琴ID时,JS是满载:HTTP://jsfiddle.net/8r9yd/4/ –