如何返回事件引起的工作结果? 例如:
var res = $.event.trigger({
type: 'my_event_name',
element: el
});
console.dir(res);
$("body").on('my_event_name', function(e)
{
return save_data(e.element);
});
如果没有事件处理程序,则有一个代码执行默认操作。如果有事件处理程序,则必须执行他的工作并且默认代码不起作用。 示例伪代码:
var res = $.event.trigger({
type: 'my_event_name',
element: el
});
if (res)
{
return true;
}
else
{
// default action code
}
答案 0 :(得分:3)
您无法在结果中传回数据,但您可以根据需要检查$array1 = array('A','A','A','A','A');
$array2 = array('C','A','A','E','D');
for($i = 0; $i < 3; $i++){
$min = 0;
$max = 4;
$n = rand($min, $max);
$array1[$n] = $array2[$n];
}
并使用e.isDefaultPrevented()
e.g。
e.preventDefault()
并使用如下:
$("body").on('my_event_name', function(e, params)
{
if (save_data(params.element)){
e.preventdefault();
}
});
注意:由于您的示例不完整,我可能会颠倒逻辑:)
一种替代方法(实际上将发送数据)是生成第二个自定义事件,传递数据,但这需要在启动进程后为结果提供单独的处理程序。
var evt = $.Event('my_event_name');
$.event.trigger( evt, {
element: el
});
if (evt.isDefaultPrevented())
{
return true;
}
else
{
// default action code
}
并听取:
$("body").on('my_event_name', function(e)
{
if (save_data(e.element)){
$.event.trigger({
type: 'my_other_event_name',
data: trueOrSomethingElse
});
}
});
答案 1 :(得分:0)
您尝试以同步方式使用事件。这不行。运行函数时,不能“等待”事件发生。
你可能想要这样的东西。
// trigger your event somewhere, maybe in another function
var res = $.event.trigger({
type: 'my_event_name',
element: el
});
$("body").on('my_event_name', function(e)
{
// when your event fires, it will fire doMyEvent()
doMyEvent(e.element)
});
function doMyEvent(eventData){
if (eventData)
{
return true;
}
else
{
// default action code
}
}