DRY JS - 如何将相同的 JavaScript 函数合并为一个?

DRY JS - How to Combine Identical JavaScript Functions into One?

我有一个 JS 函数可以根据按钮 ID 加载相同的调整大小函数。

JS Fidle Demo

我正在尝试简化代码以使其保持干爽和干净。由于我可以在单个页面上放置 100 多个这样的按钮,因此我需要以某种方式使代码更加动态。

var a = $('.a').popover();
a.on("show.bs.popover", function(e) {
    a.data()["bs.popover"].$tip.css("max-width", "630px");
});

var b = $('.b').popover();
b.on("show.bs.popover", function(e) {
    b.data()["bs.popover"].$tip.css("max-width", "630px");
});

var c = $('.c').popover();
c.on("show.bs.popover", function(e) {
    c.data()["bs.popover"].$tip.css("max-width", "630px");
});

var d = $('.d').popover();
d.on("show.bs.popover", function(e) {
    d.data()["bs.popover"].$tip.css("max-width", "630px");
});

我试过了,但它只对第一个按钮有效:

var a = $('.a, .b, .c, .d,').popover();
a.on("show.bs.popover", function (e) {
    a.data()["bs.popover"].$tip.css("max-width", "630px");
});

有什么想法吗?

我只需要让 bootstrap Popover window 600px.

您需要在闭包内使用它,以便引用活动元素

$('.a, .b, .c, .d').popover().on("show.bs.popover", function (e) {
    $(this).data()["bs.popover"].$tip.css("max-width", "630px");
});

你如何使用数据而不是把密钥放在里面也很奇怪。通常你会使用 data("key") 而不是括号符号

    $(this).data("bs.popover").$tip.css("max-width", "630px");

尝试

var a = $('.a, .b, .c, .d,');
a.each(function(){
  var $this = jQuery(this);
  $this.popover();
  $this.on("show.bs.popover", function (e) {
    $this.data("bs.popover").$tip.css("max-width", "630px");
  });
});