我有一个期望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;
}
},
我需要在页面加载时调用切换功能。
我尝试在不传递事件参数的情况下调用它。但是,这样做会破坏预期的功能,一切都变得不可编辑。
无论如何我可以获取当前事件对象并将其传递给函数吗?
或者我应该在事件监听器上附加加载事件吗?
请让我知道出路是什么?
感谢您的时间:)
答案 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();