2014-12-03 65 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函数,该函数从我称为该函数的页面中缺少。

现在所有工作都很好。