2010-11-18 52 views
0

這是代碼的一部分。問題是,這行"$("#b_facetNewChild").button().click(function(){"意味着當點擊按鈕「facetNewChild」時應該觸發以下內容:因爲按鈕上沒有「onClick」功能。另外,你能簡單地解釋一下,將這個嵌套到另一個函數「newChildFacet()」以及如何調用它是什麼意思? 對不起,我是JavaScript新手。謝謝!需要了解javascript函數的調用方式

function newChildFacet() 
    { 
     // button click 
     $("#b_facetNewChild").button().click(function(){ 
       //get selected fId 
      var $fId=getSfSelectedFIds(); 
      if($fId.length>0 && $fId.split(",").length!=1) 
      { 
       messageBox("Tip","Please select <b>ONE</b> as the parent facet. If no facet is selected, the new facet will be created under <b>root</b>."); 
       return false; 
      } 

      //some more stuff here! 
     }); 

     // newChildFacetDialog 
     $("#newChildFacetDialog").dialog({ 
      autoOpen: false, 
      modal: true, 
      title: "New Child Facet", 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog('close'); 
       }, 
       "Create": function() { 
        //get data 
        var $parentId=getSfSelectedFIds(); 

        }); 
        $(this).dialog('close'); 
       } 
      } 
     }); 

    } 
+0

它的jQuery特定 – mpapis 2010-11-18 10:28:49

回答

0

首先,是的,它必將爲click事件處理程序,所以被點擊#b_facetNewChild時,它會運行 - 你不會看到這個來源,它在DOM存儲在別處。

您可以通過調用該元素在click事件處理程序調用它,就像這樣:

$("#b_facetNewChild").click(); 

沒關係,這是一個嵌套/匿名函數,我們關心這裏是它的一個click事件處理程序,因此您可以通過以下任何方式觸發它:

$("#b_facetNewChild").click(); 
$("#b_facetNewChild").trigger("click"); 
$("#b_facetNewChild").triggerHandler("click"); 
+0

我該怎麼做?我想在點擊按鈕時調用這個函數。它已經設置爲? – 2010-11-18 10:29:02

+0

@Ahmad - 如果你運行'newChildFacet()'它會鉤住'click'處理程序,然後是它會在點擊運行,只需確保在DOM加載後的某個時刻調用'newChildFacet()' 。 – 2010-11-18 10:30:50

+0

如果這是用頁面文件以外的外部文件.js編寫的,那麼它是不同的嗎? 恐怕我不確定什麼是「DOM」? – 2010-11-18 11:48:45

0

你說得對。

$("#b_facetNewChild").button().click(function(){ ... })完全符合你的意思。但是,您不會在HTML中看到onclick處理程序,而只會在您檢查DOM/JS元素本身時(例如,使用FireBug)。

這個調用位於一個函數內的事實僅僅意味着只有在調用包裝函數時它纔會被調用(即回調附加到按鈕)。