jquery .load() 函数仅在第一次工作

jquery .load() function only working the first time

本文关键字:第一次 工作 函数 load jquery      更新时间:2023-09-26

所以我有一个网站,我正在做一个使用 jQuery 和 jQuery UI 的个人网站

以前我一直在使用隐藏的html代码,只是使用jquery来显示它。但它使我的 html 文件变得混乱,所以我想使用 jquery 的 .load() 做同样的事情,但从外部文件。

现在,它设置为.click函数。

对于我的隐藏html,每次单击特定元素时都会显示它。当您单击其他元素时,它。它隐藏了第一个。我是通过拥有一个带有 2 个类的div 来做到这一点的。 问题是当我尝试将 html 加载到隐藏的div 中,然后显示并隐藏它时,它只在第一次起作用。

说得够多了,这是我的代码。 #1 有效,#2 仅在第一次点击时有效。并且每次都将图像区域留空。

$(".jquery").click(function(){
    clearImageArea();
    hideThumbnails(5);
    showThumbnails();
    $("#1").click(function(){
        $(".imagearea").html(js);
        $(".jscode").show(1000);
        $(".title").text("Extending jQuery");
    });
    $("#2").click(function(){
          $(".jquery2").empty();
          $(".jquery2").load("jqueryEx.html");

          var jquery2 =  $(".jquery2");
          $(".imagearea").html(jquery2);
          $(".jquery2").show(1000);
          $(".title").text("Extending Jquery Example");
      });

  });

现在我的HTML文件中隐藏的东西

首先,我的html和js代码从jqueryEx加载到这里.html并通过$(".hidden").hide();隐藏在我的javascript中的其他地方,然后通过.html()加载到imagearea中,并通过.show()显示

      <div class="jquery2 hidden">
      </div>

我的另一个div看起来像这样,通过单击#1放入图像区域

    <div class="jscode hidden">
       <div class="block">

许多 js 代码被转义到 HTML 中

        </div> <!-- end of block-->    
     </div>
在我的

JS代码的其他地方,一开始我var js=$(".jscode");将其加载到您之前看到的js变量中。

如果您想查看我正在处理的过时示例转到 www.3realsoft.com(只有 CSS 和 JS 处理技能)

如果您想查看我的代码的任何其他部分,请询问。不过,其中大部分都在我的网站上。

当我尝试让一个按钮同时加载和刷新内容时,我在搜索结果中得到了这个项目,并且加载正在工作,但刷新不起作用。

这是解决方案的较短版本,将缓存设置为 false 是关键。 解决方案在另一个链接中找到,但我在这里发布这个概念,因为如果谷歌把我放在这个项目中,其他寻找同样的东西的人也可能在这里找到自己。对约翰·米利金的道具,一定要去他的答案并投票给他:停止缓存 jQuery .load 响应

<script type="text/javascript">
    $(document).ready(function () {
        $.ajaxSetup({
            // Disable caching of AJAX responses
            cache: false
        });
        $('.detail-expand').click(function () {
            var detailRowElement = $(this).closest('.session-row-tr').next();
            var detailElement = detailRowElement.find('.detail-row-div');
            var sessionId = detailElement.data("sessionId");
            detailElement.empty();
            detailElement.load('/Admin/WebLogPartial/' + sessionId, function () {
                $.bootstrapSortable(true, 'reversed');
            });
            detailRowElement.show();
        });
    });
</script>

任何依赖于正在加载的 HTML 的事情都必须在回调函数中完成,因为 AJAX 中的第一个 A 代表异步

$("#2").click(function(){
    $(".jquery2").empty();
    $(".jquery2").load("jqueryEx.html", function() {
        var jquery2 =  $(".jquery2");
        $(".imagearea").html(jquery2);
        $(".jquery2").show(1000);
        $(".title").text("Extending Jquery Example");
    });
});

我不太确定你想用.html(jquery2)做什么,因为.html()的参数应该是一个字符串,而不是一个jQuery对象。也许你的意思是:

var jquery2 = $(".jquery2").html();