jquery繫結事件並傳參例如click
阿新 • • 發佈:2019-02-04
因為要做這樣一個作業,就是兩個select中option相互轉換,圖如下:
這個作業就是給幾個按鈕新增click()事件,一般的用法是這樣的:
複製程式碼 程式碼如下:
然後我查找了官方文件,對click的說明是這樣的,後來我還是沒有百度到答案,
我考慮到程式碼的重用性,想直接傳"select1"和"select2"字串進去,我就使用下面的方法:
複製程式碼 程式碼如下:
後來發現jQuery中,如果使用函式名加括號,就是執行,所以我繫結事件的時候就執行了,如select()就執行了,後來百度了一下也沒有找到答案,就去google了一下,乖乖,還真找到了,在stackoverflow論壇上面找到了答案.然後我的程式碼就變成了這樣:
複製程式碼 程式碼如下:
click(data,fn)中的data其實是json物件,取的時候,只能通過當前的事件源來取,data是預設放在event中的,所以這裡的data是eventdata,引用的時候也使用event.data.name,也就是說JQuery中的所有觸發時間的方法,需要傳遞引數都可以通過eventdata物件來傳遞引數:
這裡分享下老外的程式碼 :
複製程式碼 程式碼如下:
這個作業就是給幾個按鈕新增click()事件,一般的用法是這樣的:
複製程式碼 程式碼如下:
$("#but_one").click(function(){
$("#select1 option:selected").appendTo($("#select2"));
});
然後我查找了官方文件,對click的說明是這樣的,後來我還是沒有百度到答案,
我考慮到程式碼的重用性,想直接傳"select1"和"select2"字串進去,我就使用下面的方法:
複製程式碼 程式碼如下:
$("#but_one").click(select("select1","select2")); //提高程式碼重用性,根據函式變更 function select(s1,s2){ $(("#"+s1+"option:selected")).appendTo($("#"+s2)); }
後來發現jQuery中,如果使用函式名加括號,就是執行,所以我繫結事件的時候就執行了,如select()就執行了,後來百度了一下也沒有找到答案,就去google了一下,乖乖,還真找到了,在stackoverflow論壇上面找到了答案.然後我的程式碼就變成了這樣:
複製程式碼 程式碼如下:
$(function(){ var obj1 = {s:"select1",s2:"select2"}; var obj2 = {s:"select2",s2:"select1"}; $("#1").click(obj1,select); $("#2").click(obj1,select2); $("#3").click(obj2,select); $("#4").click(obj2,select2); function select(event){ console.debug(event.data.s); $(("#"+event.data.s+" option:selected")).appendTo($("#"+event.data.s2)); } function select2(event){ $("#"+event.data.s+" option").appendTo($("#"+event.data.s2)); } });
click(data,fn)中的data其實是json物件,取的時候,只能通過當前的事件源來取,data是預設放在event中的,所以這裡的data是eventdata,引用的時候也使用event.data.name,也就是說JQuery中的所有觸發時間的方法,需要傳遞引數都可以通過eventdata物件來傳遞引數:
這裡分享下老外的程式碼 :
複製程式碼 程式碼如下:
$("select#test").change({msg: "ok"}, function(event) {
myHandler(event.data.msg);
});