我已经阅读了很多关于堆栈溢出的问题,但我没有回答我的问题。
我在一个有很多javascript互动的大网站上工作。最后,我希望1个文件合并所有代码。问题是我应该把这样的代码放在哪里
$('#changeMailForm').submit(/*some code here*/) // or
$('#loginForm').submit()
每个页面上都有登录表单,但用户已登录。所以如果用户已登录 js代码在文件中,它尝试绑定提交事件。我的js应用程序的结构是:
(function(init){
init(window.jQuery, window, document);
}(function($, window, document) {
$(function() {
//dom ready
});
// Classes, etc.
}));
我应该记下每个事件,不在乎它不在dom中,还是我应该检查它是否存在完全不同的东西?什么是保持应用程序可扩展和可重用的最佳实践。
答案 0 :(得分:0)
如果用户已登录且表单不存在,则jQuery将无法找到要绑定的选择器。当然,这将影响性能如此轻微,但你可以逃脱它。
或者,你可以创建一个PHP JS文件,它允许你根据你正在查看的页面打印出JS。像javascript.js.php?page = home,php代码类似于:
<?php
if($_GET['page'] == 'home'){
print "$('#changeMailForm').submit(/*some code here*/) \/\/ or";
print "$('#loginForm').submit()";
}
?>
答案 1 :(得分:0)
您可以使用jQuery处理页面中不存在的元素。如果选择器没有找到任何元素,则会返回一个空的jQuery对象,并且静默地将方法应用于空的jQuery对象。
但是,如果您在不同的页面中有许多不同的事件处理程序,那么如果您只绑定每个页面中您实际需要的那些,则它更易于维护。这使代码更易于维护,因为您可以在页面中添加元素,而无需检查站点中所有事件处理程序的列表是否存在冲突。