2015-02-11 58 views
0

我有大約10頁的HTML,每個都有一個鏈接到indexJS.js。我在js文件中有一個功能loadMoreOnScroll(),這個功能只適用於我的index.html。但當用戶滾動到底部時,loadMoreOnScroll()將在所有頁面上運行。頁面幾個HTML文件的特定JavaScript函數

如何限制loadMoreOnScroll()只能運行index.html

回答

1

添加類來區分頁面。

<body class="index">... 

使用JavaScript:

if(document.body.className.match(/\bindex\b/)){ 
    // code 
} 
的jQuery

if($("body").hasClass("index")){ 
    // code 
} 
1

添加類的body標籤上的索引,然後在JavaScript,你可以這樣做

if(document.querySelector('body').className === 'myclass'){ 
loadMoreOnScroll(); 
} 

注:這裏假設你有一個對身體沒有其他類。您可以使用數據屬性並執行getAttribute('data-page')或類似的效果。

1

您可以從indexJS中刪除loadMoreOnScroll()函數,並使用loadMoreOnScroll()創建一個新的JavaSscript文件。請確保在index.html中包含對新文件的引用。

0

我假設你從indexJS.js文件中調用loadMoreOnScroll,對嗎?

如果是這樣,解決方案是從您的JavaScript文件中刪除函數調用,而不是直接從index.html調用它。

indexJS.js

// Create the function but don't call it here 
function loadMoreOnScroll(){...} 

的index.html

<script src="indexJS.js></script> 
<script> 
    // call the function 
    loadMoreOnScroll(); 
</script> 

編輯:

其他幾個人建議增加體類和定位你的頁面的方式。這個方法是好的,而且在許多情況下可能會工作得很好,但一定要記住兩兩件事:

  1. 這非常適用,如果你需要調用只有一兩頁的功能。再者,你必須在indexJS.js之內保持不斷增長的身體課程列表。

  2. 將主體類用作鉤子將函數調用從它適用的頁面中分離出來。

換句話說,正文類將具有綁定到它的功能,如果您只查看HTML,它不會立即顯而易見。如果您自己在編寫代碼,那麼您可能會確定,但在團隊環境中,它可能會出錯。 (或者如果您在幾個月後重新訪問代碼)。這完全取決於你的項目的範圍。

相關問題