2009-08-30 5 views
-2

誰かが私の独自のjquery関数を作成して呼び出す方法を教えてくれますか? (絶対的なフロントエンドのnoobイム)jqueryのDRI? - n00b質問

は、このサンプルコード取る: - あなたがテーブルを編集するJSON呼び出しやコードを参照してください

 <script> 
    $(document).ready(function(){ 
    $.getJSON("http://127.0.0.1:8000/json/storylist/", 
     function(data){ 
      $.each(data.stories, function(i,item){ 
      $row = item.title; 
      $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>"); 
      if (i == 3) return false; 
      }); 
     }); 

      $("#refresh").click(function(event){ 
       alert("yay u clicked refresh!"); 

    $.getJSON("http://127.0.0.1:8000/json/storylist/", 
     function(data){ 
      $.each(data.stories, function(i,item){ 
      $row = item.title; 
      $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>"); 
      if (i == 3) return false; 
      }); 
     }); 


      }); 
    }); 

     </script> 

は2回再生されます。私の意図は、ページが読み込まれるときと、ユーザーが更新リンクをクリックするたびにjson部分が一度実行されるようにすることです。もし私が現在のコードを先に進めれば、明らかに、それを手に入れるのに大きなPITAになるでしょう。

手がかりはありますか?別の関数にJSONの機能をラップする

答えて

0

試してみてください。

function JSONrequest(){ 
    $.getJSON("http://127.0.0.1:8000/json/storylist/", 
     function(data){ 
      $.each(data.stories, function(i,item){ 
       $row = item.title; 
       $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>"); 
      if (i == 3) return false; 
      }); 
     }); 

} 

$(document).ready(function(){JSONrequest()}); 
$("#refresh").click(function(){JSONrequest()}); 

は今、あなたはJSONrequest関数を呼び出すときは、常に同じコードブロックを実行これを行うには

+0

ありがとうたくさん...今、完璧に動作しています... – sajal

+0

"function(){JSONrequest()}"と悩んでいるのはなぜですか? "JSONrequest"だけではないのはなぜですか? – James

1

一つの方法は、単にあなたを宣言することです独自の機能 - 通常のJavaScript関数 - と.click()方法にその機能を渡し、.ready()からそれを呼び出す:

function requestStories() { 
    $.getJSON("http://127.0.0.1:8000/json/storylist/", 
     function(data){ 
      $.each(data.stories, function(i,item){ 
       $row = item.title; 
       $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>"); 
      if (i == 3) return false; 
      }); 
     }); 
    }); 
} 

$(document).ready(function() { 
    $("#refresh").click(requestStories); 
    requestStories(); 
}); 

また、.click()ハンドラがの場合は、のJSONリクエストのみを実行すると、機能を実行した直後に.click()と呼ぶことができます。たとえば、次のように。

$(ドキュメント).ready(関数(){ $( "#リフレッシュ")をクリックします(関数(){$ .getJSON( "http://127.0.0.1:8000/json/storylist/"、 機能(データ){$ ( "#storylist tr:last ')。after(" "+ item.id +" "+ item.date + "" + item.title + "" + item.priority + ""); (I == 3)falseを返す場合、 }); }); }); 復帰はfalse;} )をクリックします。 (); });

最後に.click()が追加されています。つまり、「#refreshがクリックされたときに実行する関数を提供したので、#refreshというふりをしました。これはすべてのコードを実行することに注意してください。