jQuery将对象解析为辅助函数

时间:2014-02-12 02:03:34

标签: javascript jquery

我正在尝试将$(this)解析为另一个函数调用的函数,但没有太多运气。基本上我的问题是;它是否可能,如果可能,怎么样?

代码如下:

  

初始通话

$('.playform').on('click', playForm);
  

主要功能

function playForm(e){
    ...snip...
TweenLite.to($('.video'), 1, {css:{'height':win.h+'px'}, ease:Power4.easeInOut, onComplete:showForm});
    ...snip...
}
  

辅助功能

function showForm{
   $('.video #youtube').append('<iframe class="show-form" src="'+$('.playform').attr('href')+'"></iframe>');
}

由于我将使用多个表单,我想自动执行此过程,但我似乎无法

  

到目前为止我尝试过但无济于事的事情

  1. $(this)声明为变量
  2. 试图提供函数参数

2 个答案:

答案 0 :(得分:1)

第1步

$('.playform').on('click', function(){
    var whichVid = $(this);
    playForm(whichVid);
});

第2步

function playForm(e){
    TweenLite.to($('.video'), 1, {css:{'height':win.h+'px'}, ease:Power4.easeInOut, onComplete:showForm(e)});

}

第3步

function showForm(e){
 $('.video #youtube').append('<iframe class="show-form" src="'+e.attr('href')+'"></iframe>');
}

或者,您可以在步骤1之前建立全局变量,然后在Click事件上设置值,如

var window.whichVid = '';

$('.playform').on('click', function(){
    window.whichVid = $(this);
    playForm();
});

function playForm(){
    TweenLite.to($('.video'), 1, {css:{'height':win.h+'px'}, ease:Power4.easeInOut, onComplete:showForm()});

}

function showForm(){
 var thisVid = whichVid.attr('href');
 $('.video #youtube').append('<iframe class="show-form" src="'+ thisVid +'"></iframe>');
}

答案 1 :(得分:0)

你可以这样(未经测试):

(function($){
    var global_this;

    function palyform(e){
        global_this = $(this)
        ...
    }

    function showform(e){
        // do shomething with global_this
        ...
    }

    $('.playform').on('click', playForm);
}(jQuery);