我对Jquery/javascript很陌生,我几乎所有的经验都是在PHP方面的。我现在发现事情是如何排序的重要性:)
因此,我试图使用<div>将一些#text-container加载到容器#text-container中,然后对它们进行计数。我对jquery的load函数的理解是,第二个参数是一个回调函数,只有在加载了所有数据之后才能运行。但是,即使容器中有4-5个div,也总是报告为0。我漏掉了什么吗?
<div>1</div><div>2</div>代码:
$("#text-container").load("1.txt",alert($("#text-container div").length));这只是一个例子,但我需要用这个数字在其他函数中做一大堆数学。因此,如果我调用这些而不是警报,并试图在其中运行.length,它们都会得到0,而我的数学不工作:
想法?
发布于 2014-01-02 14:03:00
答案
$("#text-container").load('1.txt',function(){
alert($("#text-container div").length);
}); 解释
首先,让我们讨论回调函数传递,正确的语法:
$(selector).load(source,callback);假设您有一个名为gg的函数,我们希望使用它来代替回调
function gg(){
//some code for task 1
}现在让我们使用它作为回调。
(采用错误的方式)
$(selector).load(source,gg()); 注意:当您使用圆括号()__编写函数时,函数同时被调用,因此只需传递标识符即可。
(是正确的方式,)
$(selector).load(source,gg); 或使用匿名函数
$(selector).load(source,function(){
// some code for task 1
}); 注意:与只为回调定义函数不同,如果您不再使用它,最好使用匿名函数。
发布于 2014-01-02 13:53:54
您需要一个匿名函数来进行回调。
$("#text-container").load("1.txt", function(data) {
alert( $("#text-container div").length )
});这只是一个例子,但我需要用这个数字在其他函数中做一大堆数学。
请注意,它是异步的,所以在实际存在之前不能使用它,为什么您的.txt文件包含DIV元素对我来说似乎是错误的文件扩展名呢?
发布于 2014-01-02 14:01:40
你不是在做你想做的事。将结果的警报()作为参数传递。
$("#text-container").load("1.txt",alert($("#text-container div").length));
相当于:
var data = alert($("#text-container div").length); // data = 0
$("#text-container").load("1.txt", data);您想要传递一个函数作为参数:
var callback = function() {
alert($("#text-container div").length);
}
$("#text-container").load("1.txt", callback);或更短:
$("#text-container").load("1.txt", function() {
alert($("#text-container div").length);
}https://stackoverflow.com/questions/20884496
复制相似问题