加载HTML内容如果不存在JQuery AJAX

如何解决加载HTML内容如果不存在JQuery AJAX

| 我有一个带有3个按钮的页面。 >徽标>横幅>脚 当这三个按钮中的任何一个被单击时,它都会将jquery发布到一个页面,该页面作为响应返回HTML内容,我根据返回的内容设置div的innerhtml。我要这样做,以便如果单击“徽标”,然后转到“横幅”再返回“徽标”,则不应再次请求内容,因为第一次单击该内容时已加载。 谢谢 。     

解决方法

尝试这个: HTML:
<a href=\"#\" class=\"menu\" data=\"logos\" type=\"hidde-class\">logos</a><br />
<a href=\"#\" class=\"menu\" data=\"banner\" type=\"remover-class\">banner</a><br />
<a href=\"#\" class=\"menu\" data=\"footer\" type=\"remover-class\">footer</a><br />

<div id=\"container\"></div>
JS:
$(\".menu\").bind(\"click\",function(event) {

    event.stopPropagation();

    var 
       data = $(this).attr(\"data\");
       type = $(this).attr(\"type\");

    if ($(\"#container\").find(\".logos\").length > 0 && data == \"logos\") {
        $(\"#container\").find(\".logos\").show();
        return false; 
    }

    var htmlappend = $(\"<div></div>\")
                          .addClass(type)
                          .addClass(data);

    $(\"#container\").find(\".remover-class\").remove();
    $(\"#container\").find(\".hidde-class\").hide();

    $(\"#container\").append(htmlappend);

    $(\"#container\").find(\".\" + data).load(\"file_\" + data + \"_.html\");

    return false;

});
    ,听起来像是ѭ2的完美候选人
$(\".someItem\").one(\"click\",function(){
  //do your post and load the html
});
使用1将允许事件处理程序为每个元素触发一次。     ,在点击处理程序的逻辑中,查找已加载的内容。一种方法是查看是否可以找到内容随附的特定元素。 另一个方法是使用单击处理程序在元素上设置数据属性,然后查找该属性的值。 例如:
$(\".myElements\").click(function() {
        if ($(this).attr(\"data-loaded\") == false {
            // TODO: Do ajax load

            // Flag the elements so we don\'t load again
            $(\".myElements\").attr(\"data-loaded\",true);
        }
    });
将状态存储在data-属性中的好处是您不必使用全局变量,并且数据存储在DOM中,而不仅仅是在javascript中。如果您有动态页面,也可以使用它来控制服务器HTML输出的脚本行为。     ,我将取消绑定click事件,以防止进一步的加载请求
$(\'#button\').click(function(e) {
    e.preventDefault();
    $(\'#button\').unbind(\'click\');
    $(\'#result\').load(\'ajax/test.html \' + \'someid\',function() {
      //load callback
    });
});
或使用one.click比这更好的答案:)     ,您可以将返回的html转储到变量中,然后在执行另一个ajax调用之前检查变量是否为is6ѭ。
var logos = null;
var banners = null;
var footer = null;

$(\".logos\").click(function(){
    if (logos == null) // do ajax and save to logos variable
    else $(\"div\").html(logos)
});
    ,马克钉它。one()将节省额外的代码行和许多检查麻烦。我在类似的情况下使用它。我强烈建议将它们包装在父容器中的一种优化方法是:
$(\'#id_of_parent_container\').find(\'button\').one(\"click\",function () {
    //get the id of the button that was clicked and do the ajax load accordingly
});
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-