【问题标题】:jquery .load nightmarejquery .load 噩梦
【发布时间】:2011-04-27 22:30:22
【问题描述】:

在我执行 .load(somefile.php) 之后,其余的 js 代码将被执行,除非它在 ​​.load(somefile.php function(){some code here}) 中。这也是 $.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 完全其他示例。但原理是一样的。

【问题讨论】:

  • ajax调用后的代码是否依赖于ajax调用的结果?由于 ajax 根据定义是异步的,因此脚本将在等待 ajax 响应时继续执行。显然,如果脚本的后面部分期望 ajax 调用已经完成,这可能会导致问题。
  • 我不太确定这里问的是什么。
  • 改用$("li").live('click', function(){ $(this).hide(); });

标签: jquery ajax load


【解决方案1】:

如果将 li 添加为加载事件的一部分,您需要使用 jquery live 或 deligate 函数,或者在将事件添加到 dom 时附加事件。这是因为对于标准点击事件,它仅将处理程序附加到现有事件。 Live 或 delegate 会将处理程序附加到任何现有或未来的事件。

$("li").live("click",function(){
      $(this).hide();
   });

【讨论】:

    【解决方案2】:

    可能是这样的吗?

    $(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);
       });         
    });
    

    【讨论】:

      【解决方案3】:

      是的 :) 这是有效的。我也发现了

      .live({function(
       click: function() {} //etc 
      )}) 
      

      也在做一份工作:)

      还是谢谢:)

      【讨论】:

      • 这是评论,而不是答案。
      • 考虑将此答案标记为“已接受”,方法是单击其旁边的“勾选”或“检查”图标
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 2020-03-14
      • 2010-11-13
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多