jquery在更改时获取输入字段的数据属性

时间:2018-03-04 12:52:54

标签: jquery input-field

我正在尝试获取此单选框的数据属性:

<div id="corrieriContainer">
    <label><input checked="checked" type="radio" name="spedizione" data-courier="DHL" value="8.56">&euro; 8.56</label>
    <label><input type="radio" name="spedizione" data-courier="FEDEX" value="6.23">&euro; 6.23</label>
</div>

使用此代码,但它不起作用:

$("#corrieriContainer").on('change','input[type=radio][name=spedizione]',function(){
var valore = $(this).prop('checked',true).val();
var corriere = $(this).prop('checked',true).data('courier');
    alert(corriere);
});

我总是得到&#34;未定义&#34;值。为什么?我可以正确地得到$(this).prop(&#39; checked&#39;,true).val();,但不是数据属性。

你能帮我理解吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您真的不需要.prop('checked',true),这用于以编程方式为单选按钮或复选框指定值。

由于用户手动点击它来更改值,因此不需要它。

$(function() {
  $("#corrieriContainer").on('change', 'input[type=radio][name=spedizione]', function() {
    var valore = $(this).val();
    var corriere = $(this).data('courier');

    alert(corriere);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="corrieriContainer">
  <label><input checked="checked" type="radio" name="spedizione" data-courier="DHL" value="8.56">&euro; 8.56</label>
  <label><input type="radio" name="spedizione" data-courier="FEDEX" value="6.23">&euro; 6.23</label>
</div>