Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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/88.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 分配事件时避免代码重复_Javascript_Jquery - Fatal编程技术网

Javascript 分配事件时避免代码重复

Javascript 分配事件时避免代码重复,javascript,jquery,Javascript,Jquery,将同一事件触发行为指定给多个元素的好方法是一次 目前我只是像这样复制代码,但这显然不是最优的 $('.recipient #shipment_recipient_attributes_country_code').changeOrDelayedKey(function(e) { cargoflux.resetCarrierProductPriceFields(); cargoflux.getAvailableCarrierProducts(); }, 1000, 'key

将同一事件触发行为指定给多个元素的好方法是一次

目前我只是像这样复制代码,但这显然不是最优的

  $('.recipient #shipment_recipient_attributes_country_code').changeOrDelayedKey(function(e) {
    cargoflux.resetCarrierProductPriceFields();
    cargoflux.getAvailableCarrierProducts();
  }, 1000, 'keyup');

  $('#shipment_recipient_attributes_zip_code').changeOrDelayedKey(function(e) {
    cargoflux.resetCarrierProductPriceFields();
    cargoflux.getAvailableCarrierProducts();
    console.log('recp zip code')
  }, 2000, 'keyup');

  $('.sender #shipment_sender_attributes_country_code').changeOrDelayedKey(function(e) {
    cargoflux.resetCarrierProductPriceFields();
    cargoflux.getAvailableCarrierProducts();
  }, 1000, 'keyup');

  $('#shipment_sender_attributes_zip_code').changeOrDelayedKey(function(e) {
    cargoflux.resetCarrierProductPriceFields();
    cargoflux.getAvailableCarrierProducts();
  }, 2000, 'keyup');

有什么建议吗?

您可以为所有元素添加一个类,并为延迟添加一个
数据延迟
属性,然后将事件应用于每个元素:

标记:

<input class="someClass" id="some_id" data-delay="2000" ... />

您可以为所有元素添加一个类,并为延迟添加一个
数据延迟
属性,然后将事件应用于每个元素:

标记:

<input class="someClass" id="some_id" data-delay="2000" ... />

您可以为所有元素添加一个类,并为延迟添加一个
数据延迟
属性,然后将事件应用于每个元素:

标记:

<input class="someClass" id="some_id" data-delay="2000" ... />

您可以为所有元素添加一个类,并为延迟添加一个
数据延迟
属性,然后将事件应用于每个元素:

标记:

<input class="someClass" id="some_id" data-delay="2000" ... />

如果您可以更改HTML,请为每个有问题的元素添加一个公共类,并且由于您有不同的数据要求(时间不同),您可以迭代它们,并使用
data-
属性保持延迟:

  $('.someclass').each(function(){
     $(this).changeOrDelayedKey(function(e) {
        cargoflux.resetCarrierProductPriceFields();
        cargoflux.getAvailableCarrierProducts();
  }, $(this).data('delay'), 'keyup');
元素将添加
data delay=“1000”
data delay=“2000”
(以及您选择的类)

如果有固定计时组,另一种方法是将不同的类应用于不同的时间要求,并共享一个函数:

e、 g

然后只需添加
class=“someclass1000”
class=“someclass2000”
即可获得所需效果


注意:由于您有id搜索,并且id在页面上必须是唯一的,因此前面的
。recipient
对搜索查询没有影响(除了减慢搜索速度)。

如果您可以更改HTML,请为每个有问题的元素添加一个公共类,并且由于您有不同的数据要求(时间不同)您可以迭代它们并使用
data-
属性来保持延迟:

  $('.someclass').each(function(){
     $(this).changeOrDelayedKey(function(e) {
        cargoflux.resetCarrierProductPriceFields();
        cargoflux.getAvailableCarrierProducts();
  }, $(this).data('delay'), 'keyup');
元素将添加
data delay=“1000”
data delay=“2000”
(以及您选择的类)

如果有固定计时组,另一种方法是将不同的类应用于不同的时间要求,并共享一个函数:

e、 g

然后只需添加
class=“someclass1000”
class=“someclass2000”
即可获得所需效果


注意:由于您有id搜索,并且id在页面上必须是唯一的,因此前面的
。recipient
对搜索查询没有影响(除了减慢搜索速度)。

如果您可以更改HTML,请为每个有问题的元素添加一个公共类,并且由于您有不同的数据要求(时间不同)您可以迭代它们并使用
data-
属性来保持延迟:

  $('.someclass').each(function(){
     $(this).changeOrDelayedKey(function(e) {
        cargoflux.resetCarrierProductPriceFields();
        cargoflux.getAvailableCarrierProducts();
  }, $(this).data('delay'), 'keyup');
元素将添加
data delay=“1000”
data delay=“2000”
(以及您选择的类)

如果有固定计时组,另一种方法是将不同的类应用于不同的时间要求,并共享一个函数:

e、 g

然后只需添加
class=“someclass1000”
class=“someclass2000”
即可获得所需效果


注意:由于您有id搜索,并且id在页面上必须是唯一的,因此前面的
。recipient
对搜索查询没有影响(除了减慢搜索速度)。

如果您可以更改HTML,请为每个有问题的元素添加一个公共类,并且由于您有不同的数据要求(时间不同)您可以迭代它们并使用
data-
属性来保持延迟:

  $('.someclass').each(function(){
     $(this).changeOrDelayedKey(function(e) {
        cargoflux.resetCarrierProductPriceFields();
        cargoflux.getAvailableCarrierProducts();
  }, $(this).data('delay'), 'keyup');
元素将添加
data delay=“1000”
data delay=“2000”
(以及您选择的类)

如果有固定计时组,另一种方法是将不同的类应用于不同的时间要求,并共享一个函数:

e、 g

然后只需添加
class=“someclass1000”
class=“someclass2000”
即可获得所需效果


注意:由于您有id搜索,并且id在页面上必须是唯一的,因此前面的
。收件人
对搜索查询没有影响(除了减慢搜索速度)。

1)多选,2)停止反复重新定义同一函数,只使用对单个函数的引用。将重复的代码放入函数中,调用它?嗯,是的,这就是类的要点:
$('.someClass')。changeOrDelayedKey(…
你可以用一个coma
$('#firstquery,#secondquery')分割查询
,您还可以定义一个函数,将其重新用作每个更改的回调函数DelayedKeynote:由于您有id搜索,并且id在页面上必须是唯一的,因此前面的
。收件人对搜索查询没有影响(除了减慢搜索速度):)1)多选,2)停止一遍又一遍地重新定义同一个函数,只使用对单个函数的引用。将重复的代码放入函数中,调用它?嗯,是的,这就是类的要点:
$('.someClass')。ChangerDelayedKey(…
您可以使用coma
$(''firstquery,#secondquery')来拆分查询
,您还可以定义一个函数,将其重新用作每个更改的回调函数DelayedKeynote:由于您有id搜索,并且id在页面上必须是唯一的,因此前面的
。收件人对搜索查询没有影响(除了减慢搜索速度):)1)多选,2)停止一遍又一遍地重新定义同一个函数,只使用对单个函数的引用。将重复的代码放入函数中,调用它?嗯,是的,这就是类的要点:
$('.someClass')。ChangerDelayedKey(…
您可以使用coma
$(''firstquery,#secondquery')来拆分查询
,您还可以定义一个函数,将其重新用作每个变更的回调函数。delayedKeynote:as you h