簡體   English   中英

jQuery-函數完成后返回

[英]jQuery - Return once function finishes

我覺得這是一件相當簡單的事情,但我似乎無法弄清楚。 我需要一個函數來在動作完成后返回它的值。

var msg = my_function();
alert(msg);

function my_function(){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    return "Hello World!";
  });
  $("body").append(box);
} 

但是,當我這樣做時,它甚至在框附加到body標簽之前都將msg返回為“ undefined”。 如何在此基礎上添加“完成”或類似內容?

my_function不會等到用戶執行操作。 您傳遞給.click()是另一個函數,它將附加為事件處理程序,並在事件發生時執行。 這稱為異步(在這種情況下,也是事件驅動)行為。

獲得所需的返回值的技巧是為my_function提供自己的回調,該回調將在可用時使用該返回值進行調用。 請注意,此回調將在有人單擊按鈕時執行(順便說一句,您必須將其添加到正文中,否則它不會在任何地方顯示):

var myCallback = function(msg) {
    alert(msg);
}

var msg = my_function(myCallback);

function my_function(callback) {
  var box = $("<div>");
  var button = $("<span>submit</span>").click(function(){
    box.remove();
    callback("Hello World!");
  });
  $("body").append(box).append(button);
} 

您將退貨放在錯誤的位置。 回調函數中的return語句不會執行任何操作。

var msg = my_function();
alert(msg);

function my_function(){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    return "Hello World!"; // this return does not make sense
  });
  $("body").append(box);
  return "Hello World!"; // return here what you want

}

我認為這是您想要的:

my_function(function(msg) { alert(msg); });

function my_function(callbackFn){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    callbackFn("Hello World!");
  });
  $("body").append(box);
} 

但是您應該將該span放在頁面上的某個位置。

無論您想做什么,都需要將其放入您的

click(function() { ... }

說明:該函數僅在實際發生“單擊”之后才返回內容。

由於單擊后您的“ my_function()”僅返回任何內容(不會返回任何內容),因此“ msg”將始終是未定義的! ->“警報”不會等到分配了“ msg”后才開始...

暫無
暫無

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

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