2009-08-30 48 views
-2

有人可以告訴我如何製作和調用我自己的jQuery功能嗎? (IM絕對前端小白)DRI在jQuery中? - n00b問題

藉此示例代碼: -

 <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> 

你看到的JSON調用和代碼編輯錶轉載的2倍。我的意圖是在頁面加載時,以及每次用戶單擊刷新鏈接時,json部分運行一次。如果我繼續使用當前的代碼,顯然它將成爲一個主要的PITA來維護它。

任何線索?

回答

0

嘗試包裹JSON功能到另一個功能:當您調用JSONrequest功能

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()}); 

現在你總是執行相同的代碼塊做,這是簡單地宣佈

+0

非常感謝......現在完美地工作了 – sajal 2009-08-30 13:05:52

+0

爲什麼還要用「function(){JSONrequest()}」??爲什麼不只是「JSONrequest」? – James 2009-08-30 15:41:11

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()。例如:

$(文件)。就緒(函數(){ $( 「#刷新」)點擊(函數(){$ .getJSON( 「http://127.0.0.1:8000/json/storylist/」, 功能(數據){$ .each(data.stories,function(i,item){$ item = item.title; $('#storylist tr:last')。after(「+ item.id +」「+ item.date + 「」 + item.title + 「」 + item.priority + 「」);如果 (I == 3)返回false; }); }); }); 返回假; })點擊(); });

注意,額外.click()結束。這意味着,「現在我已經爲點擊#refresh提供了一個運行功能,假裝#refresh已被點擊。請記住,這將運行全部代碼與此類點擊相關聯,所以只有在此功能