0

我对 AJAX 和 Jquery 有疑问 经过数小时的研究后,我终于在这里发布了。

你可以直接在我的(未完成的)网站上看到我的问题

当您到达页面时,Accueil 上没有任何内容(这很正常)

试一试

点击项目=>

  • 触发器标题(正常)

  • 发送 Ajax 请求以将项目页面加载到主 div 中(正常)

  • ('li') 不会开始向下滑动(除非我在 Project 上再次单击

尝试 2

Go to A Propos => (一切正常) Go to Project again =>

  • 触发一切!

编码

这是用于触发项目下滑的代码:

$('li').livequery(function(){

    var lis = $('#project-container ul').find('li');
    $(lis).each(function(index) {
        var li = $(this);

        setTimeout(function() {
            li.slideDown(400);
        }, 300 * index);
    }); 
});

我认为这与此问题相同

它必须是一个回调故事,其中 var 没有正确存储或其他什么,但不幸的是我无法让它与我的页面一起使用。

有人可以帮助我吗?

4

2 回答 2

0

我不是 livequery 的忠实粉丝(我没有看到使用默认.on()方法有任何优势。(委托ofc)。

对我来说,这似乎是一个过时的库:)

另一个提示。使用参数调用正确的方法,而不是全局定义东西。如果您像这样定义全局的所有内容,您将看不到何时以及如何更改的内容。

使用三等号===!==比较。相反==,它将避免意外的误报。

function GoToLink () { if (WrapLink == 1) {您将表示可以调用js函数的url的字符串与1进行比较。为什么?

你为什么不调用 ajax 方法而不改变window.location?

为什么你需要一个额外的 ajax 库,因为你使用 jquery 你可以只使用jquery 的默认 ajax 实现

$.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 });

只需几个想法即可让您走上正轨

更新:

文档中描述了 on 方法的使用,您应该委托使用它,这意味着您将其应用于父容器并给子容器。

$('ul').on('click', 'li', function(){ //做某事 });

我在没有传递事件的情况下忽略了功能。

$('li').livequery(function () {
    var lis = $('#project-container ul').find('li');
    $(lis).each(function (index) {
        var li = $(this);

        setTimeout(function () {
            li.slideDown(400);
        }, 300 * index);
    });
});

这里最简单的方法是使用方法并在添加列表项时调用它。

 function slideDownListitems($lis){
     $lis.each(function (i) {  
        setTimeout(function () {
            $(this).slideDown(400);
        }, 300 * i);
    });
 }
 //when a listitem is added call
 slideDownListitems( $('#project-container ul li') );

JS 一周干得好!稍后我将更深入地研究其余部分并为您提供更新(现在正在工作)grtz

于 2012-10-05T10:57:33.317 回答
0

确保在页面加载后运行此代码。当我在 90% 的情况下遇到这种问题时,这就是原因。

于 2012-10-05T10:47:00.707 回答