【问题标题】:AJAX load element from internal linkAJAX 从内部链接加载元素
【发布时间】:2013-11-29 15:15:30
【问题描述】:

我在导航中有一个未排序的链接列表,如下所示:

<ul class="main-nav-child">
   <li><a href="/collections/1">collection one</a></li>
   <li><a href="/collections/2">collection two</a></li>
   <li><a href="/collections/3">collection three</a></li>
</ul>

点击后,我使用这个 sn-p 将每个链接的 html 输出加载到一个名为 .main-content 的容器中:

$('ul.main-nav-child a').bind('click', function(e) {           
  var url = $(this).attr('href');
  $('.main-content').load(url); // load the html response into a DOM element
  e.preventDefault(); // stop the browser from following the link
});

问题:我只想从链接中加载某个元素的内容,而不是整个页面。每个页面都有一个名为 .main-content 的元素,我想通过 ajax 获取它并将其显示在页面上,再次在 .main-content 中显示。

任何关于如何过滤.load() 的指导将不胜感激。

【问题讨论】:

  • 发生了什么?当您尝试发出请求时,Net 选项卡中会显示哪些错误? AJAX 调用本身是否正常工作?我预计您的选择器是错误的,它实际上想要更像$(".main-content").load(url + ".main-content");
  • 一个XMLHttpRequest只能获取整个页面,没有过滤。 jQuery 的 load() 可以选择从返回的数据中过滤掉元素,或者您可以自己使用常规的 $.ajax 调用并过滤返回的数据。

标签: jquery ajax shopify


【解决方案1】:

您应该只能引用选择器 (docs);

var url = $(this).attr('href');
$(".main-content").load(url + " .main-content");

请注意,如果您的页面中不存在.main-content,则它不会打扰发出请求。同样,如果目标页面中不存在.main-content,则不会返回任何内容。

【讨论】:

  • 谢谢,这对我有用,我误解了如何过滤.load 现在我只需要弄清楚如何在没有哈希的情况下更新 URL!
  • @DavidAlsbright 不确定您是否能够在不更改页面的情况下更新没有哈希的 URL!
  • 我的想法也是如此,不过我正在研究这个问题:stackoverflow.com/questions/824349/…。我不需要支持旧浏览器,所以看起来很有希望!
猜你喜欢
  • 1970-01-01
  • 2011-03-05
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2015-01-03
  • 2015-12-17
相关资源
最近更新 更多