传递值以触发点击功能

时间:2015-05-25 05:18:52

标签: javascript jquery

我有3个按钮,我已经使用他们的calss创建了一个点击功能。

$('.abc').click(function(){
     if (val).is(':visible')){
       //do something
     }
});

我有另一个点击功能,如下所示

$(".custom-rmenu li").click(function(){
     // This is the triggered action name
     switch($(this).attr("data-action")) {
     // A case for each action.
       case "case1": alert("first"); break;
       case "case2": alert("second"); break;
       case "case3": alert("third"); break;
     }
});

我的问题是,我需要通过$('.abc').点击功能触发$(".custom-rmenu li").点击功能。如何将每个案例的值(val)传递给$('.abc').点击功能?

3 个答案:

答案 0 :(得分:2)

您可以在trigger中传递参数,如下所示:

$( ".abc").trigger( "click", [ "myParam1", "myParam2" ] );

你可以得到参数:

$('.abc').click(function(e, myParam1, myParam2) {

文档:http://api.jquery.com/trigger/

trigger签名:.trigger( eventType [, extraParameters ] )

答案 1 :(得分:2)

在jQuery触发器函数中,第一个参数是要触发的事件,你可以将任何其他数据作为第二个参数传递给数组,如下所示:

.trigger('click', [val1, val2]);

.on('click', function(event, val1, val2) { ... })

答案 2 :(得分:0)

这种不可思议的用法就像是您无法访问的类中的“观察者”,因为点击被生成JS动画的供应商所识别。

因此,在供应商中执行动画后,您可以在主要副作用类中调用内部的侦听器,从而触发观察者。

首先创建一个DOM对象作为观察者:

<a id='#observer'></a>

在您的主类中,声明观察者:

this.observer = $('#observer');

在同一类中,定义用于处理侦听器的函数:

registerHandlers() {
    this.observer.off().click((e, params) => this[params.function](params.event));
}

最后,在动画后触发供应商内部的点击:

$('vendor-class').on('click', function (event) {
    animationJs() // Vendor stuff...
    $('#observer').trigger( "click", [ {
      event,
      function:"myFunctionToHandleVendor",
    } ] );
}

注意:。伟大的成就是传递了一个包含多重变量的对象,从而将该对象放入数组中。

[{type:'secret', user:'Jonh', msg:'Paul is dead!'}]