javascript - Jquery,从匹配正确模式的所有div中读取数据属性

标签 javascript jquery html coffeescript

我的 html 代码如下所示:

<select id="invoice_line_items_attributes_0_product_id" class="select required form-control" name="invoice[line_items_attributes][0][product_id]">
<option value=""></option>
<option value="34" data-price="123.0">asdsad</option>
<option value="35" data-price="123213.0">asd</option>
</select>

<select id="invoice_line_items_attributes_1_product_id" class="select required form-control" name="invoice[line_items_attributes][0][product_id]">
<option value=""></option>
<option value="31" data-price="1223.0">asdsad</option>
<option value="32" data-price="12333213.0">asd</option>
</select>

现在我想迭代所有这些选择,当其中一个更改时,该值会提醒该日期价格属性。我尝试使用以下代码来执行此操作:

  $('[id*="product"]').each ->
    $(this).change ->
      alert  $(this).attr("data-price")

但是它给了我 undefined 而不是这个数据价格值。

最佳答案

三件事:

1) 您不需要单独迭代 select 元素,然后绑定(bind)偶数。选择器将自行对匹配的元素执行此操作。

2)您需要找到所选选项,然后获取数据价格值。

3) 使用.data()而不是使用.attr()来获取数据属性值。

用途:

$('[id*="product"]').change(function(){
   alert($(this).find('option:selected').data('price'));
});

<强> Working Demo

关于javascript - Jquery,从匹配正确模式的所有div中读取数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25401512/

相关文章:

javascript - SummerNote ContentEditable 属性 Make False

javascript - Angular Google map - 如何向 map 添加方向

javascript - 查找未选中复选框的元素并删除其祖先

javascript - 这两个有什么区别 a = 'abc' ; var b = 'abc' ;

javascript - 如何防止表单元素发送一些我们不想要的字段?

javascript - 通过按钮发送命令播放轨道

javascript - Bootstrap 4 标签输入 - 仅从预定义列表中添加标签

html - 如何将p放在div的中心?

html - Srcset 在 React react 光滑的旋转木马中不起作用

php - 我的 SELECT 表单元素在由 JavaScript 创建时快要死了