2014-12-03 67 views
0

我已經構建了一個簡單的文字雲生成器函數,當文字雲的div應該顯示在已加載的div上時,它會被觸發。jquery函數不被div加載調用

此功能用於我的網絡應用的兩個不同頁面。

這裏是一個被保存在一個名爲文件jQuery的keywords.js

var text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus id tincidunt purus. Maecenas mi erat, gravida eget nisl vel, ultricies vehicula leo."; 
var word_list = text.split(/\W+/); 
var used; 

function populateKeywordCloud(wordCount, selector) { 
for (i = 0; i < wordCount ; i++) { 
    used = Math.floor((Math.random() * 10) + 1); 
    $(selector + ' #keyword_cloud .dataBoxContent').append('<span class="cloud_' + used + '" title="Keyword used ' + used + ' times" ">' + word_list[i] + '</span> '); 
} 
} 

$('.summary_page').ready(function() { 
populateKeywordCloud(30, '.summary_page'); 
});  

HTML:

<section class="dataBox" id="keyword_cloud"> 
     <header class="dataBoxHeader"> 
      <a href="keyword_cloud.html" title="View more">Keyword Cloud <img src="img/view_more.svg" height="12" title="View more" class="view_more" /></a> 
      <div class="minimise"> 
       <img src="img/minimise.svg" title="Minimise section" class="minIcon" width="15" height="15" onclick="toggleDataBox('keyword_cloud')" /> 
      </div> 
     </header> 
     <div class="dataBoxContent">     
     </div> 
     <a href="keyword_cloud.html" class="view_more_summaryP" title="Click for more information">View more</a> 
</section> 

但是由於某種原因populateKeywordCloud()函數將不會運行。我已經做了一些調試,看到這種方法永遠不會被解僱。

但奇怪的是,當我把下面的代碼放在這個項目的另一個.js文件中時,函數確實被觸發,我的文字雲被顯示。

$('.summary_page').ready(function() { 
populateKeywordCloud(30, '.summary_page'); 
}); 

這對我來說很奇怪。任何人都知道這是爲什麼發生? 「

+0

嘗試在控制檯中進行調試,並確保您的JavaScript不與其他腳本衝突.. – 2014-12-03 11:43:52

回答

0

http://api.jquery.com/ready/」在DOM準備就緒後執行的函數。「

你不能以這種方式使用。 .ready()僅用於知道DOM何時加載。

$(document).ready(function);是要走的路。 (當所有的DOM被加載)沒有選擇器

但是,我不知道爲什麼函數被觸發,當它在另一個文件中。也許選擇器會弄亂一些東西。

0

對不起浪費大家的時間!我正在調用另一個.js函數,該函數從我稱爲該函數的頁面中缺少。

現在所有工作都很好。