javascript在页面加载时调用单击处理函数而不传递事件对象

时间:2013-01-05 09:47:34

标签: jquery javascript-events javascript

我有一个期望click事件对象作为参数的函数。 例如

toggle: function (e) {
//does all the required work and then calls cancelEvent

this.cancelEvent(e);//IMPORTANT TO HANDLE LOCAL ANCHORS
    },


cancelEvent:function(e) {
    if (!e) e = window.event;
        if (e.preventDefault) {
        e.preventDefault();
                  } else {
            e.returnValue = false;
                  }
    },

我需要在页面加载时调用切换功能。

我尝试在不传递事件参数的情况下调用它。但是,这样做会破坏预期的功能,一切都变得不可编辑。

无论如何我可以获取当前事件对象并将其传递给函数吗?

或者我应该在事件监听器上附加加载事件吗?

请让我知道出路是什么?

感谢您的时间:)

2 个答案:

答案 0 :(得分:1)

甚至不需要使用jQuery。浏览器中的JavaScript包含本机Event对象。所以你应该能够直接调用你的toggle函数(假设你有权访问它定义的范围),就像这样......

var fakeEvent = new Event('click');
toggle(fakeEvent);

务必彻底测试。如果您的代码依赖于事件只有在真实用户点击时触发的某些属性值,那么这可能不适合您。

更好的选择是重构,以便将页面加载和单击共享的功能考虑到新函数中,该函数可以从单击事件处理函数和页面加载逻辑中调用。

答案 1 :(得分:0)

是的,你可以使用jQuery创建一个事件:

var e = $.Event('click');
$element.trigger(e); // Triggers click event on element
$.Event上的

Here's documentation。使用jQuery触发click事件,以下方式也会为您创建一个事件对象:

$element.click();