【问题标题】:Content Not Loading Into Div Upon Click (w. jQuery )Onclick 上的内容未加载到 div 中(使用 .jQuery )
【发布时间】:2018-08-10 18:13:46
【问题描述】:

我整个上午都在盯着这个问题,我就是看不出我的问题出在哪里。我查看了大多数其他“单击时将内容加载到 div”的帖子,所有 jQuery 脚本/div ID 似乎与我所拥有的相同。

基本上,我的页面上有一张卡片,其中有 2 个链接作为标题,“内容 A”和“内容 B”。我希望 card-body 在有人在内容 A 和内容 B 之间单击时动态更改。

我正在使用 Django 制作网站,如果这有什么不同的话。

该卡来自 Bootstrap。

这是我的代码:

<div class="card text-center" style="width: 800px;">
  <div class="card-header">
    <ul class="nav nav-pills card-header-pills">
      <li class="nav-item">
        <a class="nav-link" href="#actionA" style="color:#1DA1F2" id="actionA">Show Content A</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#actionB" style="color:#1DA1F2" id="actionB">Show Content B</a>
      </li>
    </ul>
  </div>
  <div class="card-body" id="tweetcontent">
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <script>
      $("#actionA").on("click", function(){
        $("#tweetcontent").load("top10pos.html");
      });
    </script>
  </div>
</div>

所有top10pos.html里面只有&lt;p&gt;Content A&lt;/p&gt;(测试),和上面卡片代码的HTML文件在同一目录下。

我做错了什么?一切似乎都遵循大多数其他帖子所说的修复。任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您是否在浏览器控制台中看到任何错误?
  • 检查浏览器开发工具网络中的实际请求并确保它成功(状态 200)并返回您期望的内容
  • 看起来我遇到了 Django 错误。在我的机器上,我当前的 URL 是:127.0.0.1:8000/sentiments/?username=realDonaldTrump#actionA,请求 URL 是 127.0.0.1:8000/sentiments/top10pos.html。我猜它是 URL 错误而不是 jQuery 错误,感谢您指出浏览器开发工具!
  • 我认为 .load() 正在打开特定目录中的 html 文件。为什么会涉及到request.URL?
  • 你试过在 $(document).ready(function(){ }); wrapper ... 可能是 dom 仍未加载且未附加事件的问题。

标签: javascript jquery html django


【解决方案1】:

我认为执行此.load() 时可能没有完全加载 DOM。

尝试像这样包装你的代码:

$(document).ready(function(){ });

让我知道你的结果 - 我会继续考虑其他可能性。

【讨论】:

  • 另外 - 你是否进行了调试以查看是否有任何东西破坏了代码?
  • 您的包装器确实修复了它!另一个问题是 URL,因为 Django 没有将“top10pos.html”识别为任何内容,因此实际上没有将任何内容加载到 div 中。谢谢!
  • 乐于助人。编码愉快!
  • 你知道我如何使用 jQuery 函数加载 HTML 的 sn-ps 吗?我基本上只想加载&lt;div class="card-content"&gt;
  • 你可以使用'$("#destinationElement").load("path/to/file.html");'加载 html sn-ps。
【解决方案2】:

这是我猜的错误! js 会在第一次点击时自动替换。

<div class="card-body" id="tweetcontent">
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <script>
      $("#actionA").on("click", function(){
        $("#tweetcontent").load("top10pos.html");
      });
    </script>
</div>

解决方案如下所示

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="card text-center" style="width: 800px;">
  <div class="card-header">
    <ul class="nav nav-pills card-header-pills">
      <li class="nav-item">
        <a class="nav-link" href="#actionA" style="color:#1DA1F2" id="actionA">Show Content A</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#actionB" style="color:#1DA1F2" id="actionB">Show Content B</a>
      </li>
    </ul>
  </div>
  <div class="card-body" id="tweetcontent">
    <p>Anything Here will be replaced</p>
  </div>
</div>

<script>
   $("#actionA").on("click", function(){
    $("#tweetcontent").load("https://enable-cors.org/");
  });

  $("#actionB").on("click", function(){
    $("#tweetcontent").load("https://www.html5rocks.com/en/tutorials/cors/");
  });
</script>

在这里运行!对于小提琴去here

 $("#actionA").on("click", function(){
  $("#tweetcontent").load("https://enable-cors.org/");
});

$("#actionB").on("click", function(){
  $("#tweetcontent").load("https://www.html5rocks.com/en/tutorials/cors/");
});
body {
  background: #ffffff;
  padding: 20px;
  font-family: Helvetica;
}
.card-body{
  background: #ddd;
  padding:10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="card text-center" style="width: 800px;">
  <div class="card-header">
    <ul class="nav nav-pills card-header-pills">
      <li class="nav-item">
        <a class="nav-link" href="#actionA" style="color:#1DA1F2" id="actionA">Show Content A</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#actionB" style="color:#1DA1F2" id="actionB">Show Content B</a>
      </li>
    </ul>
  </div>
  <div class="card-body" id="tweetcontent">
    <p>Anything Here will be replaced</p>
  </div>
</div>

【讨论】:

  • 谢谢!您如何仅加载 HTML 代码的 sn-ps 而不是网页?
  • load() 在这里完成工作,但是如果您只想获取页面的一部分,请在 django 视图的后端执行 request.get ,您可以使用 beautifulsoup 并将您需要的 html 文本发送到您的模板。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 2016-11-21
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多