2011-08-11 50 views
7

可能重複:
jQuery equivalent of JavaScript's addEventListener method的addEventListener jQuery中

從一個很好的jQuery的教程

另外:http://itunes.apple.com/in/app/designmobileweb/id486198804?mt=8

什麼是jQuery的等效下面的語句;

element1.addEventListener('click',doSomething2,false) 

如果是bind()方法,沒有任何選項來指定的最後一個參數(即事件冒泡或捕獲......真/假)

謝謝。

+0

是,以'bind'第三個參數仍然可以使用該效果:http://api.jquery.com/bind/ –

+1

' false「是所有事件處理程序的默認值,因爲IE不支持在捕獲階段觸發處理程序。 jQuery沒有辦法將它設置爲「true」。 –

+0

@詹姆斯:我想你誤解了第三個參數。它既可以是函數也可以是'false',但在這種情況下'false'意味着:*將第三個參數設置爲false將附加一個函數,該函數阻止發生默認操作並阻止事件冒泡。 –

回答

11

試試這個

// Setting the third argument to false will attach a function 
// that prevents the default action from occurring and 
// stops the event from bubbling. 
$("#element1").bind("click", doSomething2, false); 
+1

沒錯,值得一提的是它自1.4.3版本以後才被添加 –

+0

這不等同於addEventListener的第三個參數。它僅僅是'function(){return false; }'。你寫的這個調用將把doSomething2作爲事件數據處理(可能會引發錯誤)。 –

+0

@Felix - 我同意你的看法,但是OP想要這樣的事情來通過傳遞一個參數來防止事件冒泡。 – ShankarSangoli

0

使用jquerys bind method

例如:

document.bind("custom-listener", someCustomFunction, false); 

document.trigger("custom-listener", {jsonArgsKey:jsonValue}); 

function someCustomFunction(json) 
{ 
alert(json.jsonArgsKey); 
} 
+0

你忘了你的'$'功能!你不是指'$(document).bind ...'等等嗎? – Abraham

0

像這樣:

$(element1).click(doSomething) 

如果你想停止冒泡,在你doSomething函數調用event.stopPropagation(),就像這樣:

function doSomething (event){ 
    event.stopPropagation() 
    // do whatever 
} 

儘管如此,沒有辦法使用jQuery設置捕獲事件處理程序。

1

是的,我非常確定.bind()會在你需要它的時候工作。看看jQuery .bind() docs page我相信你可以找出設置。下面的演示代碼:

$(document).ready(function() { 
    $("#element1").bind('click', function() { 
     // do something on click 
    } 
}); 
+2

你忘了括號! – Abraham