Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery选择器:当我有多个选择菜单时,如何指定一个选择菜单?_Javascript_Jquery_Selector - Fatal编程技术网

Javascript jQuery选择器:当我有多个选择菜单时,如何指定一个选择菜单?

Javascript jQuery选择器:当我有多个选择菜单时,如何指定一个选择菜单?,javascript,jquery,selector,Javascript,Jquery,Selector,我有4个选择菜单,都有相同的产品。(用户应该使用选择菜单将产品添加到发票中) 因此,每个部分都由一个选择菜单、一个数量文本字段和一个价格文本字段组成。但我有四个在同一页 每当我从选择菜单中选择产品时,我都想更改数量和价格。但更具体地说,我只想知道,如何找出点击了哪个选择菜单 如果选择菜单有一类产品(.product),当我选择一个产品时,所有部分都会受到影响。但我只想影响特定的选择菜单部分 $(".product").change(function(event){ alert('produc

我有4个选择菜单,都有相同的产品。(用户应该使用选择菜单将产品添加到发票中)

因此,每个部分都由一个选择菜单、一个数量文本字段和一个价格文本字段组成。但我有四个在同一页

每当我从选择菜单中选择产品时,我都想更改数量和价格。但更具体地说,我只想知道,如何找出点击了哪个选择菜单

如果选择菜单有一类产品(.product),当我选择一个产品时,所有部分都会受到影响。但我只想影响特定的选择菜单部分

$(".product").change(function(event){
  alert('product picked'); // testing
});
我不能只是附加一个数字,像这样:product1,product2,product3。因为在javascript文件中,我必须编写4个不同的函数

$(".product1").change(function(event){, 
$(".product2").change(function(event){, etc.
我知道这是非常基本的,但我需要刷新我的jQuery内容

这是HTML的一些形式。为了简化,我只包括了产品选择菜单和数量文本字段

<div class="item">
<p>
  Product: 
  <select class="product" id="invoice_line_items_attributes_0_item_id" name="invoice[line_items_attributes][0][item_id]"><option value="1" data-defaultquantity="1">WP setup</option>
  <option value="2" data-defaultquantity="1">WordPress Theme Design</option>
  <option value="3" data-defaultquantity="1">WHE/yr</option>
  <option value="4" data-defaultquantity="1">WHE/mo</option></select>
</p>

Qty: <input class="quantity" id="invoice_line_items_attributes_0_quantity" name="invoice[line_items_attributes][0][quantity]" size="30" type="text" value="1"><br>
</div><hr>

<div class="item">
<p>
  Product: 
  <select class="product" id="invoice_line_items_attributes_1_item_id" name="invoice[line_items_attributes][1][item_id]"><option value="1" data-defaultquantity="1">WP setup</option>
  <option value="2" data-defaultquantity="1">WordPress Theme Design</option>
  <option value="3" data-defaultquantity="1">WHE/yr</option>
  <option value="4" data-defaultquantity="1">WHE/mo</option></select>
</p>
Qty: <input class="quantity" id="invoice_line_items_attributes_1_quantity" name="invoice[line_items_attributes][1][quantity]" size="30" type="text" value="1"><br>
</div><hr>


产品:
WP设置
WordPress主题设计
WHE/年
WHE/mo

数量:

产品: WP设置 WordPress主题设计 WHE/年 WHE/mo

数量:


在事件处理程序中,
将绑定到相关的
元素

$(".product").change(function(event){
  alert($(this).attr('name')); // name of <select> element changed
});

删除了我的答案,这与你的答案相似。回答得很好。如果您想将$(this)传递给子函数,可以使用subfunction.call($(this),更多参数。可能会有帮助。谢谢。它确实给了我有关数据属性的想法。我最终使用了Keith的答案,因为我有多个选择菜单,用户可能会在多个选择菜单中选择相同的产品。所以我不能用身份证。但我可以看出这在一个选择菜单的情况下是多么有用,它更清晰、更简洁。我最终使用了这个答案,因为有不止一个选择菜单。如果在多个选择菜单中选择了同一产品,则需要按最近点选择,而不是按id选择菜单。
<select name='whatever' data-quantity-id="whatever" data-price-id="whatever">
  <option ... >
</select>
$('.product').change(function(event) {
  var $quantity = $('#' + $(this).data('quantityId'));
  var $price = $('#' + $(this).data('priceId'));

  // ...
});
$(".product").change(function(event){
  $(this).closest(".section").find(".quantity").val("somevalue");
  $(this).closest(".section").find(".price").val("somevalue");
});