關(guān)于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>元素綁定事件,彈出回調(diào)中的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>指定觸發(fā)事件</button> ????<script?type="text/javascript"> ????????$('p').click(function(e)?{ ????????????alert(e.target.textContent) ????????}) ????????//this指向button元素 ????????$("button:eq(1)").click(function()?{ ????????????$('p').click()?//指定觸發(fā)綁定的事件 ????????}) ????</script> ????<h4>測試三</h4> ????<div?class="test3"> ????????<p>$('.right').click(1111,?set)</p> ????</div> ????<button>不同函數(shù)傳遞數(shù)據(jù)</button> ????<script?type="text/javascript"> ????????//不同函數(shù)傳遞數(shù)據(jù) ????????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) ?彈框顯示你鼠標(biāo)移上的元素的文本內(nèi)容
你可以看成是這樣
$("button:eq(2)").click(1111,function(e){
????alert(e.data);
});
就是給第三個button添加一個click事件,點擊的時候,把click()中的第一個參數(shù)傳入data中,然后彈框顯示。
我是這樣理解的。
2017-01-12
我本來還想掙個最佳回答的。。。。結(jié)果晚了一步。。。
2017-01-12
?target 屬性規(guī)定哪個 DOM 元素觸發(fā)了該事件。 e.target是引發(fā)事件的元素。 所以第二段代碼中的 e.target就是p元素。e.target.textContent就是彈出p標(biāo)簽的中的文本內(nèi)容。
function data(e) { ? //定義一個函數(shù) data。傳入?yún)?shù)e。
? ? ? ? ? ?alert(e.data) //1111 ?彈出,e.data
? ? ? ?}
? ? ? ?function a() { ? //定義函數(shù)a
? ? ? ? ? ?$("button:eq(2)").click(1111, data)
?? ?// ?點擊按鈕,傳入1111(注意這個傳入的1111是click函數(shù)里的eventData,這個是返回綁定當(dāng)前事件處理函數(shù)時傳遞的附加數(shù)據(jù)。其類型取決于在綁定當(dāng)前事件處理函數(shù)時所傳入的附加數(shù)據(jù)的類型。),因為后面的data沒有帶括號,所以這是一個賦值操作,測試三的函數(shù)部分其實可以這樣寫。
??function a() { ?
? ? ? ? ? ?$("button:eq(2)").click(1111, function data(e) {?
? ? ? ? ? ?alert(e.data)?
? ? ? ?}
?}
這樣就很明顯了。 e.data 就是1111.
? ? ? ?a(); //調(diào)用a 方法。
------------------------------------------------------補(bǔ)充一點---------------------------------------------
function fun(){
? ?return 5
}
var a=fun ?// fun代表函數(shù)。
var b=fun() ?//fun()代表函數(shù)的返回值。
JS中我們把以上代碼加粗的部分叫做函數(shù),函數(shù)是一種叫做function引用類型的實例,因此函數(shù)是一個對象。對象是保存在內(nèi)存中的,函數(shù)名則是指向這個對象的指針。
var a = fun 表示把函數(shù)名fun這個指針拷貝一份給變量a,但是這不是指函數(shù)本身被復(fù)制了一份。
就好比,地圖上上海市(對應(yīng)函數(shù)對象)只有一個,但指向上海市的路標(biāo)(對應(yīng)指針)有很多,而且你還可以繼續(xù)添加(復(fù)制)無數(shù)個指向上海市的路標(biāo),但上海市本身不會被復(fù)制。
如果函數(shù)名后面加上圓括號就表示立即調(diào)用(執(zhí)行)這個函數(shù)里面的代碼(花括號部分的代碼)。
另外函數(shù)聲明和函數(shù)表達(dá)式在私有作用域?qū)懛ǚ矫嬉矔诤瘮?shù)體后面加圓括號表示立即調(diào)用這個函數(shù),題主可以參看JS的模仿塊級作用域的知識。
上面這段是我復(fù)制 知乎大神的,方便你的理解,哈哈,謝謝。
2017-01-12
e只是參數(shù),任意取值;對應(yīng)即可;e.target 是目標(biāo)對象