Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery返回触发器_Javascript_Jquery_Events - Fatal编程技术网

Javascript jquery返回触发器

Javascript jquery返回触发器,javascript,jquery,events,Javascript,Jquery,Events,我使用JQuery将函数附加到元素: $("button").on("random", function() { 但我希望函数返回一个结果: alert('called'); return 'button has been clicked'; } 问题是,当我使用“trigger”来触发函数时,函数会执行,但结果不会返回,而是返回JQuery元素(我想) $("a"

我使用JQuery将函数附加到元素:

$("button").on("random",
               function() {
但我希望函数返回一个结果:

                 alert('called');
                 return 'button has been clicked';
               }
问题是,当我使用“trigger”来触发函数时,函数会执行,但结果不会返回,而是返回JQuery元素(我想)

$("a").on("click",
          function() {alert($('button').trigger('random'));}
         )
如何编写或调用函数以返回其结果

JSFiddle:


谢谢。

您不能向触发器返回值,但可以存储其值。一种方法是将对象传递给调用并在其中存储值

$(document).ready(function() {
    $("button").on("random",
                   function(e, obj) {
                     alert('called');
                     obj.value= 'button has been clicked';
                   }
                  );
    $("a").on("click",
              function()
              {
var infoObj = {value: ''};               $('button').trigger('random',[infoObj]);
console.log(infoObj.value)}
             )
  }
)

Another way is using jQuery's `.data()` method.

$(document).ready(function() {
    $("button").on("random",
                   function(e, obj) {
                     alert('called');
                     obj.value= 'button has been clicked';
                   }
                  );
    $("a").on("click",
              function()
              {
var infoObj = {value: ''};               $('button').trigger('random');
alert(infoObj.value)}
             )
  }
)

另一种方法是使用
.triggerHandler()
而不是
.trigger()
。 不过我建议你先看一下这些文件,看看是否符合你的要求。但它确实解决了这个问题

$(document).ready(function() {
    $("button").on("random",
          function(e) {
               alert('called');
              return 'button has been clicked';
          }
     );
    $("a").on("click", function() {             
                alert($('button').triggerHandler('random'));
        })
})

调用触发器时不要再次发出警报。函数本身执行“警报”。@AliSheikhpour,警报是用来显示错误的,实际上,触发器会在一行中产生两个警报-用于触发函数并显示返回的数据。但是-返回的数据不是函数触发的结果,这是我的问题。我确实想到了这一点,但感觉相当混乱。。。“如果在接下来的几天里没有更好的选择,我会接受你的。”博伊斯维特补充道。谢谢,我应该想到triggerHandler!它解释了当触发器作为事件响应的一部分调用函数时,函数结果不出现的原因。
Another way is using jQuery's `.data()` method.

$(document).ready(function() {
    $("button").on("random",
                   function(e, obj) {
                     alert('called');
                     obj.value= 'button has been clicked';
                   }
                  );
    $("a").on("click",
              function()
              {
var infoObj = {value: ''};               $('button').trigger('random');
alert(infoObj.value)}
             )
  }
)