【问题标题】:Jquery load ins't working, is there a syntax error in my code?Jquery 加载不起作用,我的代码中是否存在语法错误?
【发布时间】:2012-10-19 14:09:15
【问题描述】:

我正在开发一个 wordpress 作品集,我正在尝试使用 ajax/jquery .load() 将帖子内容加载到滑动抽屉中。在@techfoobar 的帮助下,当我单击页面的选定元素(缩略图)时,我已经能够打开抽屉了。但是现在我很难找到为什么我的 ajax 内容没有加载到这个 div 中...

当我单击缩略图时,会打开抽屉,然后浏览器会继续访问 url,而不是在抽屉中加载此 url。如果我按 Esc 停止浏览器,我可以读取“正在加载...”,因此 jQuery 一直工作到那时。

有人可以检查这个小提琴http://jsfiddle.net/RF6df/14/ 并告诉如果我放错了加载功能,或者是否存在严重的语法问题阻止我的内容正确加载? (我假设负载不会在 jsfiddle 上工作,但至少你可以检查代码)

在此之前仅供参考,在第一次尝试 ajax 时,我使用它来加载我的内容,它工作正常,但我的 div 已经在我的 php 页面中就位(检测到点击时未加载)。 哦,请记住,我是 jquery 的新手,如果你能评论/解释你所看到或所做的,那将是无价的!​​p>

$(document).ready(function(){
    $.ajaxSetup({cache:false});
    $(".ProjectWrap,.mosaic-overlay,.mosaic-backdrop").click(function(){
        var post_link = $(this).attr("href");
        //$('#DrawerContainer').slideToggle(500);
        $("#DrawerContainer").html("loading...");
        $("#DrawerContainer").load(post_link + " #container > * ");
    return false;
    });
});
$(document).ajaxSuccess(function() {  // refresh heading in ajax called element
Cufon('h1'); 
});

编辑:
我刚刚注意到,当我写 .load("http://localhost/youpiemonday_New/test4 #container > * ") 时,抽屉会获取 test4 帖子的内容。我还是要按 Esc 才能停止浏览器,否则太快了。
如果我写.load(post_link + " #container > * "),唯一显示的是“正在加载...”。 所以我假设负载正在工作,但问题来自post_link 部分。奇怪的是,当我的功能严格限制为负载时,它就可以正常工作。

【问题讨论】:

  • Uncaught ReferenceError: Cufon is not defined
  • 浏览器比人眼更适合识别语法错误......你为什么不看看控制台输出?
  • cufon 已加载到我的本地安装中,所以我认为它不是来自此...控制台返回的唯一内容是 Failed to load resource: the server responded with a status of 404 (Not Found) 带有一个像这样的奇怪地址 mylocalhostaddress/.../undefined?_=1350656188907...你认为它不能识别var post_link = $(this).attr("href"); 部分吗?
  • 正如@Blazemonger 所说,Cufon 应该是什么?因为ajaxSuccess 函数似乎被调用了。
  • 好吧,cufon 只是在加载内容时刷新我的 h1。它曾经用于我的第一个测试(上图),我现在只是将其删除以尝试但没有任何变化......

标签: jquery ajax wordpress syntax


【解决方案1】:

我想我看到了你的问题。 .ProjectWrap 是你的 li 是吗?如果是这样,您要做的是从没有 href 属性的 LI 获取 href。

试试这个:

var post_link = $(this)
                 .parentsUntil(".ProjectWrap")
                 .parent()
                 .find(".mosaic-backdrop")
                 .attr("href");

这是在说:为此 (.ProjectWrapper) 找到 <a /> 并获取 href。

【讨论】:

  • 不错的尝试,但没有奏效。 .ProjectWrapper 是包含在 LI 中的 div(我知道这很糟糕,但它正在工作,不记得我为什么这样做了......)。那个 div 包装了我的链接的图像和文本。我编辑了小提琴中的第一个 li,这样你就可以看到它在我的电脑中的样子。 http://jsfiddle.net/RF6df/16/.
  • 刚刚编辑了帖子,看到最后一部分了吗?看起来像var post_link 的问题你不觉得吗?
  • 看起来像,但还是不认为它找到了正确的href。尝试将点击事件从 $(".ProjectWrap,.mosaic-overlay,.mosaic-backdrop") 缩小到 $(".mosaic-backdrop")。看看这是否给了你正确的post_link
  • 提示:如果你有Firebug,你可以在你的js文件中的某处使用这一行轻松测试js变量/对象:console.debug(post_link);然后检查firebug中的“控制台”选项卡,它会告诉你你的 post_link...
  • 感谢您的提示,这是我得到的:Uncaught ReferenceError: post_link is not defined。顺便说一句,我的点击事件现在看起来像这样$('#portfolio-list li:not(#DrawerContainer)').click(function(),但我很确定问题不是来自这个,因为当我点击抽屉时。
猜你喜欢
  • 2015-03-28
  • 2016-05-06
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
相关资源
最近更新 更多