Jquery返回未定义的数据属性

时间:2017-05-17 13:32:19

标签: jquery

如何从警告id_tarif_groupe上的data-idTarif获取值?我尝试使用attr()data()方法,但没有一种方法正常运行。



$('.ddd').click(function(event) {
  var ID = $(this).attr('id');
}).change(function() {
  var ID = $(this).attr('id');
  var tarifHT = $('#id_saddle_model_' + ID).val();
  var id_tarif_groupe = $(this).data('idTarif');

  alert(id_tarif_groupe + ' ' + tarifHT + ' ' + ID);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr bgcolor=#e0e0e0 id="108" class="ddd">
    <td>ASG </td>
    <td><input type="text" value="" style="" id="id_saddle_model_108" data-idTarif="1"></td>
    <td><input type="text" value="3700.00" style="" id="id_saddle_model_108" data-idTarif="2"></td>
    <td id="l_108"></td>
  </tr>
  <tr bgcolor=#ffffff id="99" class="ddd">
    <td>CEC </td>
    <td><input type="text" value="" style="" id="id_saddle_model_99" data-idTarif="1"></td>
    <td><input type="text" value="" style="" id="id_saddle_model_99" data-idTarif="2"></td>
    <td id="l_99"></td>
  </tr>
</table>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

ddd元素没有data且您的错误

&#13;
&#13;
$('.ddd input').change(function() {
  var id_saddle_model_ = $(this);
  var ID = id_saddle_model_.closest("tr").attr("id");
  var tarifHT = id_saddle_model_.val();
  var id_tarif_groupe = id_saddle_model_.attr('data-idTarif');
  alert(id_tarif_groupe + ' ' + tarifHT + ' ' + ID);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr bgcolor=#e0e0e0 id="108" class="ddd">
    <td>ASG </td>
    <td><input type="text" value="" style="" id="id_saddle_model_108" data-idTarif="1"></td>
    <td><input type="text" value="3700.00" style="" id="id_saddle_model_108" data-idTarif="2"></td>
    <td id="l_108"></td>
  </tr>
  <tr bgcolor=#ffffff id="99" class="ddd">
    <td>CEC </td>
    <td><input type="text" value="" style="" id="id_saddle_model_99" data-idTarif="1"></td>
    <td><input type="text" value="" style="" id="id_saddle_model_99" data-idTarif="2"></td>
    <td id="l_99"></td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

this指的是触发更改的元素..如果您在警报中打印它,则会看到触发事件的tablerow。

要获取输入字段的值,您需要将this更改为input

它也需要小写,如w3c标准中所述: https://www.w3.org/TR/html5/dom.html#dom-dataset

  

对于前五个字符的元素的每个内容属性   是字符串“data-”,其余字符(如果有的话)不是   包括任何大写的ASCII字母,按顺序包括   属性列在元素的属性列表中,添加一个   名称 - 值对列表,其名称是属性的名称   删除前五个字符,其值为属性   值。

$('.ddd').click(function(event) {
  var ID = $(this).attr('id');
}).change(function() {
  var ID = $(this).attr('id');
  var input = $('#id_saddle_model_' + ID);
  var tarifHT = input.val();
  var id_tarif_groupe = input.data('idtarif');

  alert(this + ':' + input +  ':' + id_tarif_groupe + ' ' + tarifHT + ' ' + ID);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr bgcolor=#e0e0e0 id="108" class="ddd">
    <td>ASG </td>
    <td><input type="text" value="" style="" id="id_saddle_model_108" data-idTarif="1"></td>
    <td><input type="text" value="3700.00" style="" id="id_saddle_model_108" data-idTarif="2"></td>
    <td id="l_108"></td>
  </tr>
  <tr bgcolor=#ffffff id="99" class="ddd">
    <td>CEC </td>
    <td><input type="text" value="" style="" id="id_saddle_model_99" data-idTarif="1"></td>
    <td><input type="text" value="" style="" id="id_saddle_model_99" data-idTarif="2"></td>
    <td id="l_99"></td>
  </tr>
</table>