簡體   English   中英

如何將多個匿名jquery函數轉換為單個命名函數?

[英]How do I convert several anonymous jquery functions into a single named function?

是否可以將以下四個匿名jquery函數轉換為一個傳遞參數的函數?

這就是我所擁有的......

    dropZone.addEventListener("dragenter", this.dragEnter, false);
    dropZone.addEventListener("dragover", this.dragOver, false);
    dropZone.addEventListener("dragleave", this.dragLeave, false);
    dropZone.addEventListener("drop", this.dragDrop, false);

...

this.dragOver = function(ev) {
    ev.stopPropagation();
    ev.preventDefault();
    this.className = "dragover";
}

this.dragLeave = function(ev) {
    ev.stopPropagation();
    ev.preventDefault();
    this.className = "dragleave";
}

this.dragEnter = function(ev) {
    ev.stopPropagation();
    ev.preventDefault();
    this.className = "dragenter";
}

this.dragDrop = function(ev) {
    ev.stopPropagation();
    ev.preventDefault();
    this.className = "dragdrop";
}

我正在尋找與...功能類似的東西

    dropZone.addEventListener("dragenter", dropEvent(this,"dragenter"), false);
    dropZone.addEventListener("dragover",  dropEvent(this,"dragOver"), false);
    dropZone.addEventListener("dragleave", dropEvent(this,"dragLeave"), false);
    dropZone.addEventListener("drop",      dropEvent(this,"dragDrop"), false);

...

function dragEvent(ev, label) {
    ev.stopPropagation();
    ev.preventDefault();
    this.className = label;
}

您可以使用部分應用的功能執行此操作:

function dragEvent(that, label) {
  return function(ev) {
    ev.stopPropagation();
    ev.preventDefault();
    that.className = label;
  }
}

您可以在此處閱讀有關javascript中部分應用程序的更多信息: http//benalman.com/news/2012/09/partial-application-in-javascript/

暫無
暫無

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

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