我正在使用JQuery将函数附加到元素:
$("button").on("random",
function() {
但我想让函数返回一个结果:
alert('called');
return 'button has been clicked';
}
问题是,当我使用'触发'要触发该函数,该函数会执行,但结果不会返回 - 而是返回JQuery元素(我认为)。
$("a").on("click",
function() {alert($('button').trigger('random'));}
)
如何编写或调用函数以返回其结果?
JSFiddle:https://jsfiddle.net/cs3cqv3z/3
谢谢。
答案 0 :(得分:2)
您无法将值返回给触发器,但可以存储其值。一种方法是将对象传递给调用并在其中存储值。
$(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)}
)
}
)
<强> JSFIDDLE 强>
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'));
})
})
<强> JSFIDDLE 强>