jQuery在哪里放dom交互

时间:2013-04-15 10:59:10

标签: jquery dom

我已经阅读了很多关于堆栈溢出的问题,但我没有回答我的问题。

我在一个有很多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中,还是我应该检查它是否存在完全不同的东西?什么是保持应用程序可扩展和可重用的最佳实践。

2 个答案:

答案 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对象。

但是,如果您在不同的页面中有许多不同的事件处理程序,那么如果您只绑定每个页面中您实际需要的那些,则它更易于维护。这使代码更易于维护,因为您可以在页面中添加元素,而无需检查站点中所有事件处理程序的列表是否存在冲突。