如何在插件调用中插入单击功能?

时间:2010-10-15 19:35:27

标签: javascript jquery scope

在fullCalendar()中,一个jQuery插件,我可以获得view.visStart的值。函数view.visStart之外不可用。我怎样才能获得view.visStart(这是不好的,因为它是Global?)或者如何在插件调用中插入click函数?感谢。

$('#calendar').fullCalendar({
    events: "js/events.json"
    console.log(view.visStart); //value is returned
});

$('.fc-button-next').click(function() {
    console.log(view.visStart); //view is not defined
});

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用父作用域中的变量。

您必须注意当然如何以及何时更改该变量。

你也可以以某种方式返回变量。或者,如果您希望它写保护,您可以返回一个返回变量的函数。但我不确定return调用会如何影响.fullCalendar(),因为我不知道它是如何工作的。

(function() {                      // <== Scope for your stuff
    var myVis;                     // myVis is available everywhere in your scope
                                   //   but it is not global

    $(function() {                                               // <== Doc ready
        $('#calendar').fullCalendar({
            events: "js/events.json"
            cmyVis = view.visStart; //set myVis
        });

        $('.fc-button-next').click(function() {
            console.log(myVis);                             //view is not defined
        });
    });
}());

答案 1 :(得分:1)

也许这不是你要求的,但如果你想在jquery插件中绑定一个click函数,你可以使用live()

首先检查渲染的html并查看插件插入的内容 - 找到您尝试将click函数绑定到的html元素的id或类。即使在调用该行并且稍后创建该元素之后,live()也将绑定任何元素。

$('.pluginlink').live('click', function() {
  //code
});

我不知道这是否是您正在寻找的,但部分问题是如何在插件中插入点击功能。祝你好运!