關于jQuery事件的問題
<!DOCTYPE?html> <html> <head> ????<meta?http-equiv="Content-type"?content="text/html;?charset=utf-8"?/> ????<title></title> ????<style> ????.test2?{ ????????background:?#bbffaa; ????} ????.test3?{ ????????background:?yellow; ????} ????.test2,.test3{ ????????border:?1px?solid?red; ????} ????</style> ????<script?src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script> </head> <body> ????<h2>.click()方法</h2> ????<h4>測試一</h4> ????<button>元素綁定事件,彈出回調中的this</button> ????<script?type="text/javascript"> ????????//this指向button元素 ????????$("button:eq(0)").click(function()?{ ???????? alert(this) ????????}) ????</script> ????<h4>測試二</h4> ????<div?class="test2"> ????????<p>$('button:first').click(function(e)?{alert(this)})</p> ????</div> ????<button>指定觸發事件</button> ????<script?type="text/javascript"> ????????$('p').click(function(e)?{ ????????????alert(e.target.textContent) ????????}) ????????//this指向button元素 ????????$("button:eq(1)").click(function()?{ ????????????$('p').click()?//指定觸發綁定的事件 ????????}) ????</script> ????<h4>測試三</h4> ????<div?class="test3"> ????????<p>$('.right').click(1111,?set)</p> ????</div> ????<button>不同函數傳遞數據</button> ????<script?type="text/javascript"> ????????//不同函數傳遞數據 ????????function?data(e)?{ ????????????alert(e.data)?//1111 ????????} ????????function?a()?{ ????????????$("button:eq(2)").click(1111,?data) ????????} ????????a(); ????</script> </body> </html>
? ?alert(e.target.textContent) ?測試2中的這個代碼什么意思啊
function data(e) {
? ? ? ? ? ?alert(e.data) //1111
? ? ? ?}
? ? ? ?function a() {
? ? ? ? ? ?$("button:eq(2)").click(1111, data)
? ? ? ?}
? ? ? ?a();
測試3看不懂啊 ?感覺好亂啊
2017-01-12
?alert(e.target.textContent) ?彈框顯示你鼠標移上的元素的文本內容
你可以看成是這樣
$("button:eq(2)").click(1111,function(e){
????alert(e.data);
});
就是給第三個button添加一個click事件,點擊的時候,把click()中的第一個參數傳入data中,然后彈框顯示。
我是這樣理解的。
2017-01-12
我本來還想掙個最佳回答的。。。。結果晚了一步。。。
2017-01-12
?target 屬性規定哪個 DOM 元素觸發了該事件。 e.target是引發事件的元素。 所以第二段代碼中的 e.target就是p元素。e.target.textContent就是彈出p標簽的中的文本內容。
function data(e) { ? //定義一個函數 data。傳入參數e。
? ? ? ? ? ?alert(e.data) //1111 ?彈出,e.data
? ? ? ?}
? ? ? ?function a() { ? //定義函數a
? ? ? ? ? ?$("button:eq(2)").click(1111, data)
?? ?// ?點擊按鈕,傳入1111(注意這個傳入的1111是click函數里的eventData,這個是返回綁定當前事件處理函數時傳遞的附加數據。其類型取決于在綁定當前事件處理函數時所傳入的附加數據的類型。),因為后面的data沒有帶括號,所以這是一個賦值操作,測試三的函數部分其實可以這樣寫。
??function a() { ?
? ? ? ? ? ?$("button:eq(2)").click(1111, function data(e) {?
? ? ? ? ? ?alert(e.data)?
? ? ? ?}
?}
這樣就很明顯了。 e.data 就是1111.
? ? ? ?a(); //調用a 方法。
------------------------------------------------------補充一點---------------------------------------------
function fun(){
? ?return 5
}
var a=fun ?// fun代表函數。
var b=fun() ?//fun()代表函數的返回值。
JS中我們把以上代碼加粗的部分叫做函數,函數是一種叫做function引用類型的實例,因此函數是一個對象。對象是保存在內存中的,函數名則是指向這個對象的指針。
var a = fun 表示把函數名fun這個指針拷貝一份給變量a,但是這不是指函數本身被復制了一份。
就好比,地圖上上海市(對應函數對象)只有一個,但指向上海市的路標(對應指針)有很多,而且你還可以繼續添加(復制)無數個指向上海市的路標,但上海市本身不會被復制。
如果函數名后面加上圓括號就表示立即調用(執行)這個函數里面的代碼(花括號部分的代碼)。
另外函數聲明和函數表達式在私有作用域寫法方面也會在函數體后面加圓括號表示立即調用這個函數,題主可以參看JS的模仿塊級作用域的知識。
上面這段是我復制 知乎大神的,方便你的理解,哈哈,謝謝。
2017-01-12
e只是參數,任意取值;對應即可;e.target 是目標對象