jQuery – .Ready触发不在页面中的div标签

我在一个单独的.js脚本文件中实现了下面的函数,我在我的主页面(Asp.net mvc)中加载。

回调服务器的成本相当昂贵,但如果需要在我的div标签需要填写的子页面/内容页面上特别要求,则可以。

我的问题是代码在每个页面上运行,包括不存在div标签的页面。

我该如何补救我的代码?

任何评论欢迎,谢谢,安德斯,丹麦

jQuery("divStatWrapper").ready(function() { jQuery.getJSON("/Statistics/GetPointsDevelopment", function(json) { jQuery("#divStatWrapper #divStatLoading").fadeOut(1000); var jsonPoints = new Array(); jQuery.each(json.Points, function(i, item) { jsonPoints.push(item.PlayerPoints ); }); jsonPoints.reverse(); var api = new jGCharts.Api(); jQuery('') .attr('src', api.make({ data : jsonPoints, type : "lc", size : "600x250" })) .appendTo("#divStatContents"); jQuery("#divStatWrapper #divStatContents").fadeIn(1000); }); }); 

HTML:

      

Statistik - udvikling i point over tid

(Alle resultater frem til løbende dato)

Loading

只是一个想法:

 $("#divStatContents").each(function(){ // your code here }); 

将为每个#divStatContents运行一次

你错过了#?

 jQuery("#divStatWrapper").ready(function() [...] ___ 

除此之外,ready函数在DOM准备好时触发,而不是在元素加载时触发。 来自文档:

.ready()方法只能在与当前文档匹配的jQuery对象上调用,因此可以省略选择器。

您可能应该绑定到div的load事件而不是ready事件:

 jQuery('#divStatWrapper').load(function() [...] 

这可能是因为你的初始选择器是错误的。 我假设您的HTML中没有任何元素,这意味着您要引用带有ID的

,如下所示(注意#):

 jQuery("#divStatWrapper") 
 //declare event to run when div is visible function doFunction(){ //do something } //hookup the event $('#divId').bind('isVisible', doFunction); //show div and trigger custom event in callback when div is visible $('#divId').show('slow', function(){ $(this).trigger('isVisible'); });