2014-09-23 146 views
0

說明:e.stopPropagation();在自定義功能

下面的代碼工作,因爲它應該

$("body").on("click","#grumpy",function(e){ 

// perform some thing 

e.stopPropagation(); 

}); 

,但如果我創建一個自定義函數,如果我想在stopPropagation()它不工作..如

function myFunction() 
{ 
    // do some work 

e.stopPropagation(); 
} 

我的代碼

echo '<div class="recent_notice_in_side shake" id = "notice_no_'.$notice_id.'" onclick = "notice_expand(this.id)"> 
// other divs... 

</div>'; 

如何在自定義函數中實現e.stopPropagation();我搜索了Google,但無法找到如何在自定義函數中執行此操作。

+2

'myFunction'應該有一個名爲事件參數'e' – shakib 2014-09-23 10:36:33

+3

他們都將無法正常工作...'$( 「身體」 ).on(「click」,「#grumpy」,function(){'should be'$(「body」)。on(「click」,「#grumpy」,function(e){' – 2014-09-23 10:36:35

+0

我很抱歉是一個打字錯誤......但你能告訴我如何在自定義函數中做到這一點 – 2014-09-23 10:39:20

回答

3

你命名的功能需要採取一個參數e,就像匿名函數:通過創建你的點擊事件,並通過在「E」給你的函數在

function myFunction(e) { 
    // do some work 
    e.stopPropagation(); 
} 

$("body").on("click", "#grumpy", myFunction); 
+0

或者(如果還需要運行一些其他代碼),您將事件向前傳遞'$(「body」)on(「click」,「#grumpy」,function(e){ doSomethingElse(); ' – 2014-09-23 10:42:38

0

你可以這樣做實際的點擊事件。

var e = jQuery.Event("click"); 
myFunction(e); 

創建的事件的使用可以在jquery中處理。下面的代碼演示了相同的:

$(function() { 
     var myFunction = function (e) { 
      e.stopPropagation(); 
     }; 
     $("input[type=button]").click(function() { 
      var e = jQuery.Event("click"); 
      myFunction(e); 
     }); 

在HTML

<input type="button" value="Stop Propagation" /> 
+0

不能工作形式我 – 2014-09-23 11:09:04

+0

我做了一個編輯,其中一個按鈕點擊事件觸發,實際上調用另一個方法,其中e通過,請檢查,並讓我知道,如果它現在工作 – 2014-09-23 12:05:59