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