是否可以将参数/变量传递给Onblur函数



是否可以将参数/变量传递给Onblur函数,因为它们都是单独的函数,并且不使用全局变量和创建闭包函数?

我也不想调用example()函数,因为它有其他函数和AJAX。

function example(){
//Stuff I don't want to repeat.
//Ajax load to get A
Var A='Reusable Data';
}
$('#buttonId').on("blur", function() {
console.log("I need"+ A);
})

如果你不愿意使用全局变量,那么你就不能访问它范围之外的变量,你可以做一件事来获得值,它基本上是闭包概念,如果需要,你可以在其他地方使用示例函数对象。

function example(){
   Var A;
   return{
     getValue:function(){
       return A;
     }
  };
 }
var exObj = example();
$('#buttonId').on("blur", function() {
 console.log("I need"+ exOb.getValue());
}

已编辑

function example(){
   Var A;
   return{
     getValue:function(fn){
        fn(A);
       },
  };
 }
var blurFunc = function(val) {
    console.log("I need"+ val;
}
$('#buttonId').on("blur", example().getValue(blurFunc));
在Jquery中,您可以在注册事件处理程序时传递数据。

更多信息:http://api.jquery.com/on/#passing-数据

function example() {
  //Stuff I don't want to repeat.
  //Ajax load to get A
  var A = 'Reusable Data';
  return function() {
    return A;
  }
}
$('#buttonId')
  .on(
    "click", 
    { getValue: example() },
    function(event) {
      var a = event.data.getValue();
      alert("I need " + a);
    }
  );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button id="buttonId">test</button>

我为演示将事件从blur更改为click,但这适用于任何事件。

您需要从函数example()returnvar A。然后您可以通过直接访问函数来访问var A

function example(){
//Ajax load to get A
Var A='Reusable Data';
return A;
}
$('#buttonId').on("blur", function() {
console.log("I need"+ example());
}

编辑

使其全球化(我不会建议你这样做)

var A;
function example(){
A='Reusable Data';
return A;
}
$('#buttonId').on("blur", function() {
console.log("I need"+ example());
}

您可能会将这两个函数包装在IIFE(立即调用的函数表达式)上,并在ajax调用成功时绑定事件

(function(){
   function example(){
       $.ajax.........done(function(response){
          bindOnBlurEvent(response);
       });
   }
   function bindOnBlurEvent(response){
      //bind the event with the response
   }
}());

最新更新