簡體   English   中英

如果條件為真,則綁定事件,否則立即執行

[英]Bind an event if condition is true or else execute immediately

有沒有一種已知的模式可以代替這種代碼:

if(condition) {
    $(el).on("event", function() {
        doSomething();
    });
}
else {
   doSomething();
}

doSomething在哪里總是相同的功能?

包起來?

function doBindOrExecute(el, condition, func) {
  if(condition) {
      $(el).on("event", function() {
          func();
      });
  }
  else {
     func();
  }
}

doBindOrExecute(el, true, function() {
  // Do stuff
});

如果您正在尋找一個簡短的復雜解決方案,則可以嘗試類似的方法。

$(el).on('event', condition ? doSomething : doSomething() && false);

使用三元運算符 ,如果condition評估為true ,它將把'event'綁定到函數doSomething 否則,它將調用doSomething並始終使用false值,因此無論doSomething的返回值是什么,實際上都沒有綁定。

對於可讀性或維護而言,這不是最好的方法,但是您可以

if(condition || doSomething()) {
    $(el).on("event", function() {
        doSomething();
    });
}

只要doSomething()不返回真實值。 但是,將其包裝絕對是一個更好的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM