2012-10-05 70 views
0

我有一個問題,AJAX和Jquery 經過幾小時的研究,我finaly在這裏發佈。阿賈克斯需要再次點擊加載

你可以看到我的問題directly on my (nonfinished) website

當你在頁面上到達,就沒有什麼ACCUEIL(這是正常的)

TRY 1

點擊項目=>

  • 觸發器標頭(普通)

  • 發送一個Ajax請求的項目頁面加載到主DIV(正常)

  • 的(「禮」)不開始了slideDown(除非我點擊第二次上項目

TRY 2

去Propos =>(一切正常)再次前往項目 =>

  • 觸發一切!

守則

這裏是用來觸發項目了slideDown代碼:我認爲這是同樣的問題this question

它必須是一個回調的故事

$('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沒有妥善保存或 ,但不幸的是我不能讓它與我的網頁一起工作。

有人可以幫我嗎?

回答

0

確保您在加載頁面後運行此代碼。當我在90%的情況下遭受這種問題時,這就是原因。

+0

嗯,好的,但我該怎麼辦? – Kazzin

+0

用'$(document).ready(function {.. your code ...})封裝你的代碼;'你可以在[documentation](http://api.jquery.com/ready/)找到它。我不認爲這是問題在這裏,但它是最好的做法,無論如何, – VDP

+1

我的代碼已經在document.ready :) – Kazzin

0

我不是的liveQuery的大風扇(我沒有看到過使用默認.on()方法任何優勢。(delegated OFC)。

這似乎是一個過時的lib我:)

另一個提示。在全球範圍內定義材料時,用參數調用正確的方法。如果你像這樣定義全局全局,你會忽略什麼時候發生什麼變化。

使用tripple相等===!==進行比較。而不是==它會避免意外的誤報。

in function GoToLink() { if (WrapLink == 1) {你比較一個字符串表示一個可以調用js函數的url,爲什麼?

你爲什麼不調用ajax方法來改變window.location

,因爲你使用jquery爲什麼你需要一個額外的Ajax庫,你可以只使用jquery's default ajax implemention

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

只是一對夫婦的想法,讓你在正確的軌道

上的更新:

使用on方法在documentation中描述,您應該使用它的委託,這意味着您將它應用於pa租用容器並給孩子。 ('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

+0

嘿VDP, 首先感謝您的回答,並看看我的碼。我是Jquery和Ajax的新手(自1周以來一直在做這一切) 所以我有幾個問題:如何使用.on()而不是livequery?//你是什麼意思:調用正確的方法?//好的比較//在函數GoToLink()=>我做了這個東西來比較WrapLink的舊值與新的值。這樣,如果用戶再次點擊相同的鏈接,它可以避免重新加載頁面。//爲什麼不使用ajax ...是因爲window.location是我遇到的第一個解決方案。謝謝你的一切! – Kazzin

+0

謝謝你的一切!你真是太酷了! 並感謝您的讚美 我想修改我的功能,但它似乎更復雜,它似乎^^ – Kazzin

+0

和順便說一句,我一直在測試ajax調用,修改slidedownfunction,我不能讓他們工作:( – Kazzin