0

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

我在一个有很多 javascript 交互的大网站上工作。最后,我想要一个所有代码合并的文件。问题是我应该把这样的代码放在哪里

$('#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中还是应该检查它是否存在或完全不同的东西?什么是保持应用程序可扩展和可重用的最佳实践。

4

2 回答 2

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()";
}
?>
于 2013-04-15T11:07:24.710 回答
0

您可以使用 jQuery 来处理页面中不存在的元素。如果选择器没有找到任何元素,你会得到一个空的 jQuery 对象,并且将方法应用到一个空的 jQuery 对象上什么也不做。

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

于 2013-04-15T11:08:35.290 回答