如何获取您正在使用的当前对象

时间:2014-07-07 13:55:50

标签: javascript jquery

我需要两次处理AJAX请求,首先是在第一次打开网站时,第二次是在点击按钮时。我不想写两个类似的功能。所以我创建了一个ajaxPost函数。我想知道如何检测哪个事件称为ajaxPost函数?打开浏览器或点击按钮?

function ajaxPost() {
    url = "post.php";
    if (this!=Window) {
        button = $(this).attr("class");
    } else {
        button = "";
    }
    var posting = $.post(url,{"button": button});
    posting.done(function(data) {
        $(".word").html(data);
    });
}
$(document).ready(function() {
    ajaxPost();
    $("input[type=button]").click(ajaxPost);
});

2 个答案:

答案 0 :(得分:1)

检查您通过点击传递的jQuery事件。

function ajaxPost(event) {
    url = "post.php";
    if (event == undefined || event == null) { //Was not generated by a user click
        button = $(this).attr("class");
    } else {
        button = "";
    }
    var posting = $.post(url,{"button": button});
    posting.done(function(data) {
        $(".word").html(data);
    });
}
$(document).ready(function() {
    ajaxPost();
    $("input[type=button]").click(ajaxPost);
});

答案 1 :(得分:1)

一个简单的解决方案是在调用函数时包含一个附加参数:

function ajaxPost( caller ) {
  switch( caller ){
    case "initial_load":
      // called on page load
    break;
    case "button_click":
      // called on button click
    break;
  }
  ...
}

现在您需要从两种不同类型的调用中传递此参数:

$(document).ready(function() {
  ajaxPost( "initial_load" ); 
  $("input[type=button]").on( "click", function(){
    ajaxPost( "button_click" );
  });
});