到目前为止,在我的网站开发过程中,我一直将所有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给用户一个链接转到下一部分我不会自动去那里。
答案 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的情况下运行的人,但这应该是完全可行的并且是很好的做法。