在我执行.load(somefile.php)之后,除了在.load(somefile.php function(){some code here})之外,其余的js代码都要执行。这也是$ .ajax成功或完整功能的问题。在里面它工作时和外面它不工作。这是一些小的测试脚本。
$(document).ready(function(){
$("#loadData").click(function(){
$(this).text("...One Moment Please...");
$("#container").
append('<div id="favoriteFiles"></div>').
load("data.php ul#favoriteFiles", function(){$("#loadData").remove();});
});
///this part is not working when outside of .load function
/// when inside it is working
$("li").click(function(){
$(this).hide();
});
});
//data.php looks like this
<ul id="favoriteFiles">
<li style="font-weight: bold; list-style-type: none;">My favorite files</li>
<li>Contact.php</li>
<li>second.doc</li>
<li>test.php</li>
<li>a.test.ini</li>
</ul>
所以我问你们这是怎么可能的,我怎么能解决这个问题,因为将所有内容放在.success或.complete或.load函数中是愚蠢的。
拜托,有没有人有一些想法?这只是一个简单的例子。我完全需要jquery .load。但原则是一样的。
答案 0 :(得分:2)
如果将li作为加载事件的一部分添加,则需要使用jquery live或deligate函数,或者在将事件添加到dom时附加事件。这是因为对于标准的click事件,它只将处理程序附加到现有事件。 Live或delegate会将处理程序附加到任何现有或未来的事件中。
$("li").live("click",function(){
$(this).hide();
});
答案 1 :(得分:0)
这样的事可能吗?
$(document).ready(function(){
var onDataLoad = function() {
$("#loadData").remove();
$("li").click(function(){
$(this).hide();
});
};
$("#loadData").click(function(){
$(this).text("...One Moment Please...");
$("#container").
append('<div id="favoriteFiles"></div>').
load("data.php ul#favoriteFiles", onDataLoad);
});
});
答案 2 :(得分:0)
是:)这是有效的。我也发现了
.live({function(
click: function() {} //etc
)})
也在做一份工作:)
非常感谢:)。