Jquery 如何干掉一些代码

Jquery 如何干掉一些代码,jquery,dry,Jquery,Dry,假设在一个电子商务网站上,有两种方式添加一个项目,一种是从目录中添加,另一种是从购物车中添加 <btn class="add_item" data-type="cart"></btn> <btn class="add_item" data-type="catalog"></btn> 方案B $(".add_item").click(function() { if ($(this).data("type") == "cart") { d

假设在一个电子商务网站上,有两种方式添加一个项目,一种是从目录中添加,另一种是从购物车中添加

<btn class="add_item" data-type="cart"></btn>
<btn class="add_item" data-type="catalog"></btn>
方案B

$(".add_item").click(function() {
  if ($(this).data("type") == "cart") {
    doSomethingUniqueToCart();
  } else {
    doSomethingUniqueToCatalog();
  }
  doSomethingSharedToAdd();
})

我为您提供了选项C:

var functionList = {
"cart":doSomethingUniqueToCart,
"catalog":doSomethingUniqueToCatalog
}
$(".add_item").click(function() {
  functionList[$(this).data("type")]();
  doSomethingSharedToAdd();
});

一般来说,附加特定侦听器比附加一般侦听器更有效,并且必须查询信息以区分案例。我可能会这样做

$(".add_item[data-type='cart']").click(doSomethingUniqueToCart);
$(".add_item[data-type='catalog']").click(doSomethingUniqueToCatalog);
$(".add_item").click(doSomethingSharedToAdd);
$(".add_item[data-type='cart']").click(doSomethingUniqueToCart);
$(".add_item[data-type='catalog']").click(doSomethingUniqueToCatalog);
$(".add_item").click(doSomethingSharedToAdd);