在身体上使用触发器
问题描述:
我有一个变量被设置在插件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文档说,触发方法是传递参数到事件处理程序。这是什么意思?我将如何访问前一个事件中设置的变量?
一如既往地提前致谢。
答
通常情况下,你将额外的参数传递给一个事件,如果它有一个自定义事件,您可以访问:此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
您可以使用.trigger()来做到这一点,触发事件。您传递.trigger()一个字符串,告诉它要触发哪个事件(例如:'click'或'mouseenter')或实际的“事件”对象。这里已经传递了一个包含2个属性'test'和'another'的对象。那什么都不会做。此外,访问插件变量几乎不是一个好主意。如果您告诉我们您实际上想要做的事情,我们可能会提供更好的解决方案。 – Sinetheta
在插件中的这个特定事件中,作者执行.get()解析JSON并设置一些变量。我想在我的事件中访问那些相同的变量,我也想同时开火,所以他指示我这就是为什么他包含('body')触发器的原因。我想我只是不知道如何使用它。 – Steve
我基本上试图避免重复的.get()请求,只是访问插件在第一个事件中返回的数据。我想我正在接近这个错误? – Steve