如何使用jQuery绑定HTML元素的新函数?

时间:2010-08-27 14:32:37

标签: jquery html

首先是我的问题的一个小背景,我正在尝试确定用户如何浏览网站,我得到一个脚本(来自stackoverflow用户,非常感谢),名为autoLogoff.js,它的工作原理非常好,直到我试图使用JavaScript提交表单。这是autoLogoff代码(我正在尝试做一些修改)

function endSession() {
 location.replace('/login/');
}

var validNavigation = false;

function wireUpEvents() {
 // Attach the event click for all links in the page
 $("a").bind("click", function() {
   validNavigation = true;
 });

 // Attach the event submit for all forms in the page
 $("form").bind("submit", function() {
  validNavigation = true;
 });

 // Attach the event submit for all submit buttons in the page
 $("input:submit").bind("click", function() {
  validNavigation = true;
 });

 // Attach the event submit for all submit buttons in the page
 $("input:button").bind("click", function() {
  validNavigation = true;
 });

 $("form").manualSubmit = function(){
  validNavigation = true;
  this.submit();
 };
}

// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
    wireUpEvents();
    /*
 * For a list of events that triggers onbeforeunload on IE
 * check http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx
 */
 window.onbeforeunload = function() {
  if (!validNavigation) {
   endSession();
  }
 }
});

现在我的问题是,当我在每个javascript函数上执行此操作时,在Internet Explorer上

$('form').get(0).submit();

变量(validNavigation)从未设置,因此将我发送到登录并终止会话,这是不可取的,我也不想在每个函数上手动设置变量,所以我想出了添加自定义的想法将函数提交到您在上面的代码中看到的每个表单。但每当我$('form').get(0).manualSubmit();时,我都会收到错误,即函数未定义。有什么不对吗?

提前致谢 PD:很抱歉这个巨大的解释,但我认为这是必要的)

1 个答案:

答案 0 :(得分:0)

它看起来应该是$('form').manualSubmit();,但是这个:

 $("form").manualSubmit = function(){

是胡说八道。它在当前的表单列表上创建一个新的jQuery包装器,然后向该包装器添加一个方法,然后将其丢弃。

作者的意思可能是:

jQuery.fn.manualSubmit= function() {
    validNavigation = true;
    this[0].submit();
}