0

谁可以给我解释一下这个。我的网站上有 1 个 js 文件,主要使用 jQuery,我的所有 js 代码都使用所有页面上的元素,除了 1 个针对仅在一个页面上的元素的 js 代码。

因此,当我转到那个页面时,我没有收到任何 JavaScript 错误,但是当我转到任何其他页面时,它会给我$..Undefined该元素的错误。我正在使用.offset().top该元素的代码。我假设那是因为如果您只针对一个页面上的元素,我应该只在该页面上包含一个脚本,而不是把它放在我的 js 文件中???这是否包括所有 jquery 函数或只是特定于使用.offset()和/或其他的东西?我的假设正确吗?

4

4 回答 4

1

只需在您的 JS 文件中快速检查该元素即可。例如,元素只在一页上:

<span id="coolSpan">span stuff</span>

JS:

if ($("#coolSpan").length) {
    //element exists, bind the handler
    $("#coolSpan").click(function() {
        console.log("I exist!");
    });
}
于 2013-06-27T17:37:31.057 回答
1

我喜欢做的是这样写我的js页面:

var initMyFunction = function(){
     *code for initMyFunction*
};

var initMyOtherFunction = function(){
     *code for initMyOtherFunction*
};

然后在我的标记中,我可以调用我想在那个页面上运行的函数,只要我在调用我的脚本之后调用它。

<!-- Scripts -->
<script src="js/main.js"></script>

<!-- Inits -->
<script>initMyFunction();</script>

它的好处是只运行您需要在该页面上运行的代码,而不是在每个页面上运行所有 js。

于 2013-06-27T17:39:12.493 回答
1

如果您尝试访问不存在的元素的功能,无论您使用的是什么功能,您都会收到错误消息。

解决方案:

  1. 正如您所说,您可以将特定代码放在单独的 .js 文件中,并仅将该文件包含在适当的 HTML 页面中。

  2. 您可以检查元素是否存在,然后才能继续操作它。例如:

    var elem = document.getElementById("mySpecialElement");  
    如果(元素){  
        /* 元素存在,操作它是安全的 */  
        $(elem).offset()...  
    }
于 2013-06-27T17:42:24.920 回答
0

正如您所建议的,您可以将它放在<script>该页面的标签中,但是您也可以在尝试执行操作之前简单地检查该元素是否存在。

于 2013-06-27T17:37:34.107 回答