在身体上使用触发器

问题描述:

我有一个变量被设置在插件JS文件中,并且在我自己的自定义JS文件中,我将同一事件调用到开发人员工作上的piggypack。在身体上使用触发器

问题是我需要访问插件javascript事件中设置的变量。

$('#link').live('click', function() { 
    var test = 123456; 
    var another = 'string'; 

    $('body').trigger({ 
    'test' : test, 
    'another' : another 
    }); 
}); 

现在,在我自己的自定义JS,我呼吁#link同样的方法添加自己的代码来执行:其作为插件JS遵循真实当前设置。

$('#link').on('click', function(){ 
    // I need to access the another variable set previously 
}); 

我真的没有得到的是,当jquery文档说,触发方法是传递参数到事件处理程序。这是什么意思?我将如何访问前一个事件中设置的变量?

一如既往地提前致谢。

+0

您可以使用.trigger()来做到这一点,触发事件。您传递.trigger()一个字符串,告诉它要触发哪个事件(例如:'click'或'mouseenter')或实际的“事件”对象。这里已经传递了一个包含2个属性'test'和'another'的对象。那什么都不会做。此外,访问插件变量几乎不是一个好主意。如果您告诉我们您实际上想要做的事情,我们可能会提供更好的解决方案。 – Sinetheta

+0

在插件中的这个特定事件中,作者执行.get()解析JSON并设置一些变量。我想在我的事件中访问那些相同的变量,我也想同时开火,所以他指示我这就是为什么他包含('body')触发器的原因。我想我只是不知道如何使用它。 – Steve

+0

我基本上试图避免重复的.get()请求,只是访问插件在第一个事件中返回的数据。我想我正在接近这个错误? – Steve

通常情况下,你将额外的参数传递给一个事件,如果它有一个自定义事件,您可以访问:此HIT事件之后

$('#link').live('click', function() { 
    var test = 123456; 
    var another = 'string'; 
    $('body').trigger('HIT',{ 
     'test': test, 
     'another': another 
    }); 
}); 

$('body').on('HIT', function(e,param1) { 
    $('#hitter').append('hi'); 
    $('#hitter').append(param1.test); 
}); 

,#hitter的价值将有“hi123456”附加到它。访问“另一个”只是param1.another,它返回“string”。

+0

这似乎是诀窍,谢谢!我可以像你所做的那样使用自定义事件,并将插件触发器方法中的每个项目都添加为参数,以便在新方法中再次访问它们。 – Steve