0

私は AJAX と Jquery に問題があります。何時間もの調査の後、最終的にここに投稿します。

私の(未完成の)ウェブサイトで私の問題を直接見ることができます

ページに到着すると、アキュイユには何もありません (正常です)。

やってみる 1

プロジェクトをクリックします=>

  • トリガー ヘッダー (通常)

  • プロジェクト ページをメイン div にロードする Ajax リクエストを送信する (通常)

  • ('li') は SlideDown を開始しません ( Project をもう一度クリックした場合を除く)

2 を試す

A Propos に移動=> (すべて正常です) Project に再度移動=>

  • すべてをトリガーします!

コード

プロジェクトのスライドダウンをトリガーするために使用されるコードは次のとおりです。

$('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

ページが読み込まれたら、必ずこのコードを実行してください。私が90%のケースでこの種の問題に苦しんでいるとき、それが理由です。

于 2012-10-05T10:47:00.707 に答える
0

私は livequery の大ファンではありません (デフォルトの.on()方法 (委譲されたofc) を使用する利点はありません)。

私には時代遅れのライブラリのようです:)

もう一つのヒント。グローバルなものを定義する代わりに、パラメーターを使用して適切なメソッドを呼び出します。このようにすべてをグローバルに定義すると、いつ、何によって何が変更されるのか見失います。

比較するには、 triple equal===とを使用します。!==むしろ、==予期しない誤検知を回避します。

function GoToLink () { if (WrapLink == 1) {js関数を呼び出すことができるURLを表す文字列を1と比較します。なぜですか?

を変更する代わりに ajax メソッドを呼び出してみませんwindow.locationか?

jquery を使用しているため、追加の ajax ライブラリが必要なのはなぜですか。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') );

1週間のJSお疲れ様でした!後で残りの部分を詳しく見て、最新情報を提供します(現在作業中)grtz

于 2012-10-05T10:57:33.317 に答える