2015-01-10 114 views
-1

我想動態地設置點擊事件。當我讀取一些數據並返回true後,onclick事件需要在dijit/form/Button上做一件事,當我返回false onclick事件時,需要在同一個按鈕上做其他事情。動態地改變點擊事件dojo按鈕

if(m_test==true){ 
     if(dojo.byId(tmp_tst_button)){ 
      dojo.removeClass(tmp_tst_button,'button_fr'); 
      dojo.addClass(tmp_tst_button,'button_fr_toggle'); 

      var change_on_click = dojo.byId(tmp_tst_button); 
      dojo.connect(change_on_click,'onclick',function(){ 
       command(tmp_binary_off); 

      }); 
     }    
    } 
    else{ 
     if(dojo.byId(tmp_tst_button)){ 
      dojo.removeClass(tmp_tst_button,'button_fr_toggle'); 
      dojo.addClass(tmp_tst_button,'button_fr'); 

      var change_off_click = dojo.byId(tmp_tst_button); 
      dojo.connect(change_off_click,'onclick',function(){ 
       command(tmp_binary_on); 

      }); 

     }    
    }   

和事件是連接,但每一次數據改變一個多個事件的onclick是補充,所以當我點擊鏈接我多次調用命令,每下一次更多。每次都像命令函數一樣附加到按鈕上。

回答

1

您需要修改您的dojo.connect代碼,如下所示。

var handle = dojo.connect(change_on_click,'onclick',function(){ 
       command(tmp_binary_off); 
       // disconnect after use. 
       dojo.disconnect(handle); 

      }); 
+0

工程很好,感謝您的快速響應。 – astralravenko