2010-11-18 50 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)。

这个调用位于一个函数内的事实仅仅意味着只有在调用包装函数时它才会被调用(即回调附加到按钮)。