使用PHP触发jQuery函数

时间:2009-10-28 17:05:29

标签: php javascript jquery event-handling

到目前为止,在我的网站开发过程中,我一直将所有jQuery函数存储在外部.js文件中,下面是两个函数示例:

// Loads the login form into the page.
function loadLoginForm() {
  $('[name=loadLoginForm]').click(function() {
    $("#loadingImage").css({ display:"block" });
    $("#mainWrap").load("modules/web/loginForm.php", null, function(data) {
      loadRegisterForm(this, data);
      validateLoginDetails(this, data);
      characterSelect(this, data);
    });
  });
}

// Loads the register form into the page.
function loadRegisterForm() {
  $('[name=loadRegisterForm]').click(function() {
    $("#loadingImage").css({ display:"block" });
    $("#mainWrap").load("modules/web/registerForm.php", null, function(data) {
      loadLoginForm(this, data);    
      registerUser(this, data);
    });
  });
}

我触发这些功能的方法是使用PHP这样的回显链接到页面上;

Click <a href="#" name="loadLoginForm"><i>here</i></a> to login.

我现在面临的问题是如何让代码的PHP端触发事件而不是给用户一个触发它的链接?

我想出的唯一答案是让PHP回应一些JavaScript,所以当页面加载JavaScript时会触发所需的函数,但我不知道如何编写代码。

需要使用它的情况是,例如当用户成功登录时,我没有赢得PHP给用户一个链接转到下一部分我不会自动去那里。

2 个答案:

答案 0 :(得分:3)

我认为最好在外部拥有一大堆Javascript函数,就像你似乎在做的那样。在该公共外部JS文件中不应执行任何(或很少)代码。然后在您的HTML页面中添加一些动态Javascript:

<script type="text/javascript">
$(function() {
  loadLoginForm();
  loadRegisterForm();
});
</script>

或者,您可以将ready()代码放在函数中。这样,只有最小和必要的代码才能在页面上执行。

相信我,我已经完成了另一种方式(所有代码都在每个页面上执行),页面加载时间很快就变得非常高。

修改:如果您只想调用某个活动,请说明:

<a href="#" id="delete">Delete</a>

你只需要:

$(function() {
  $("#delete").click();
});

(假设已经分配了点击处理程序)。没有参数的click()会触发click事件。

您还可以在手动调用Javascript中有效地设置“this”。想象一下你有:

$("#delete").click(delete_stuff);

function delete_stuff() {
  alert($(this).attr("href"));
  return false;
});

您可以通过以下方式在其他地方拨打电话:

delete_stuff.call($("#delete")[0]);

这是明确设置“this”。请参阅JavaScript call and apply

这有帮助吗?

答案 1 :(得分:0)

  

我现在面临的问题是如何做到的   我让代码的PHP端触发   一个事件,而不是它给用户   触发它的链接?

也许使用load event?当'[name = loadRegisterForm]'或'[name = loadLoginForm]'出现在页面上时,它们应该在回调中运行代码。我没有对此进行测试,也不确定这是否是你所要求的,但我相信这是事件的运作方式......

你考虑过这样做吗?你应该避免使用javascript,如果无论如何都可以通过php在页面加载时创建正确的html - 毕竟,这就是它的用途。我通常不会那种暗示你应该让网站总是在没有javascript的情况下运行的人,但这应该是完全可行的并且是很好的做法。