jquery .load噩梦

时间:2011-04-26 18:27:38

标签: jquery ajax load

在我执行.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。但原则是一样的。

3 个答案:

答案 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 
)}) 

也在做一份工作:)

非常感谢:)。