欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

jquery的自定義事件,jquery 自定義事件

高分求高手,jquery的autocomplete怎么自定義觸發(fā)事件

1、jquery.autocomplete詳解 語法: autocomplete(urlor data, [options] ) 參數(shù): url or data:數(shù)組或者url [options]:可選項,選項解釋如下: 1) minChars (Number) 在觸發(fā)autoComplete前用戶至少需要輸入的字符數(shù),Default:1,如果設(shè)為0

創(chuàng)新互聯(lián)專注于達(dá)茂旗網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供達(dá)茂旗營銷型網(wǎng)站建設(shè),達(dá)茂旗網(wǎng)站制作、達(dá)茂旗網(wǎng)頁設(shè)計、達(dá)茂旗網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造達(dá)茂旗網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供達(dá)茂旗網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

jQuery自定義元素右鍵點擊事件(實現(xiàn)案例)

大多數(shù)情況下我們使用左鍵來進行頁面交互,而右鍵大部分對于開發(fā)者來說是審查元素的,有的時候我們也要自定義鼠標(biāo)右鍵點擊行為來達(dá)到更好的交互性,常見的有漫畫左鍵前進、右鍵后退。

第一步我們要屏蔽瀏覽器默認(rèn)的右鍵點擊行為,即阻止彈出框。

首先要將阻止彈出函數(shù)綁定到目標(biāo)元素上:

//阻止瀏覽器默認(rèn)右鍵點擊事件

$("div").bind("contextmenu",

function(){

return

false;

})

如此一來,div元素的右擊事件就被屏蔽了,而瀏覽器其他區(qū)域不受影響,如果你想在整個頁面屏蔽右擊事件,只需這樣做:

document.oncontextmenu

=

function()

{

return

false;

}

接下來就可以為元素綁定右擊響應(yīng)函數(shù)了:

$("div").mousedown(function(e)

{

console.log(e.which);

//右鍵為3

if

(3

==

e.which)

{

$(this).css({

"font-size":

"-=2px"

});

}

else

if

(1

==

e.which)

{

//左鍵為1

$(this).css({

"font-size":

"+=3px"

});

}

})

示例效果為右擊字體縮小,左擊字體變大,且其它區(qū)域可以響應(yīng)默認(rèn)右擊事件。

完整代碼:

head

style

type="text/css"

div{

font-size:20px;

}

/style

script

src="../jquery.js"/script

script

$(function()

{

//阻止瀏覽器默認(rèn)右鍵點擊事件

/*document.oncontextmenu

=

function()

{

return

false;

}*/

//某元素組織右鍵點擊事件

$("div").bind("contextmenu",

function(){

return

false;

})

$("div").mousedown(function(e)

{

console.log(e.which);

//右鍵為3

if

(3

==

e.which)

{

$(this).css({

"font-size":

"-=2px"

});

}

else

if

(1

==

e.which)

{

//左鍵為1

$(this).css({

"font-size":

"+=3px"

});

}

})

})

/script

/head

body

div

div

/div

/body

以上這篇jQuery自定義元素右鍵點擊事件(實現(xiàn)案例)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

jquery自定義事件 this問題

兩個地方需要說明

$.fn.xxx 中的 this 指向的是 $() 調(diào)用時的 jQuery 對象,不用再通過$來封裝;

$.fn.longPress 中,如果要調(diào)用參數(shù)里的 fn,并且正確傳遞DOM對象的話,需要寫成類似以下這樣:

$.fn.longPress?=?function(fn)?{

...

this.each(function()?{

fn.apply(this?/*,?其它參數(shù)?*/?);

});

};

用 apply 方法來替換回調(diào)函數(shù)fn中的 this 。

具體來說,在setTimeout的時候,可以類似這么調(diào)用:

timeout?=?setTimeout(function()?{

fn.apply($temThis[i]);

},?800);

這樣,在 fn() 中的this就變成當(dāng)前DOM對象了。

但是,這樣寫還有一個重要問題,那就是變量 i ,它的值在當(dāng)前閉包環(huán)境中會變成 $temThis.length ,導(dǎo)致代碼出錯。要正確工作,需要改成這樣:

for(var?i?=?0;?i??$temThis.length;?i++)?{

(function(target)?{

var?timeout;

target.addEventListener('touchstart',?function(event)?{

timeout?=?setTimeout(function()?{

fn.apply(target);

},?800);

},?false);

target.addEventListener('touchend',?function(event)?{

clearTimeout(timeout);

},?false);

})($temThis[i]);

}

這樣創(chuàng)建一個閉包,確保$temThis[i]在每個閉包中都是正確的。另外注意那個timeout,由于對象可能有多個,因此每個對象需要一個單獨的 timeout 。

使用 jQuery 的方法會簡化一些,含義是一樣的,如下:

$temThis.each(function()?{

var?timeout,?target?=?this;

this.addEventListener('touchstart',?function(event)?{

timeout?=?setTimeout(function()?{

fn.apply(target);

},?800);

},?false);

this.addEventListener('touchend',?function(event)?{

clearTimeout(timeout);

},?false);

});

jquery 自定義事件怎樣傳遞 this

用兩種方式:

build.click(function()?{

buildforsel(this);

});

build.click(function(e)?{

buildforsel(e.target);

});

jQuery實現(xiàn)獲取綁定自定義事件元素的方法

本文實例講述了jQuery實現(xiàn)獲取綁定自定義事件元素的方法。分享給大家供大家參考,具體如下:

(function

($)

{

//

自定義itemtab事件

$.fn.bind

=

function(types,

data,

fn)

{

//

重載jQuery.fn.bind方法,用來截獲綁定自定義事件的元素

if(typeof

types

==

'string'

'itemtab'

==

types)

{

var

itemTouchStart

=

-1;

//

touchstart位置

var

itemTouchMove

=

-1;

//

touchend位置,值為-1時表示未觸發(fā)

var

itemTriggerDistance

=

0;

//

拖動距離閥值,若大于該值則為拖動列表,若小于等于該值則為點擊列表項

var

itemMoved

=

false;

//

列表是否為拖動狀態(tài)

$(this).bind('touchstart',

function

(event)

{

if(!event.originalEvent.touches.length)

return

true;

itemMoved

=

false;

itemTouchStart

=

event.originalEvent.touches[0].pageX;

//

記錄起始位置

}).bind('touchmove',

function

(event)

{

if(!event.originalEvent.touches.length)

return

true;

itemTouchMove

=

event.originalEvent.touches[0].pageX;

//

當(dāng)前拖動位置

//console.log('touchmove:',

itemTouchStart,

itemTouchMove,

itemMoved);

if(Math.abs(itemTouchMove

-

itemTouchStart)

itemTriggerDistance)

{

itemMoved

=

true;

//

列表被拖動

}

}).bind('touchend',

function

(event)

{

//console.log('itemMoved:',

itemMoved);

if(itemMoved)

{

//

列表被拖動過,非點擊操作

return

true;

}

$(this).trigger('itemtab');

//

觸發(fā)自定義事件

});

}

return

this.on(

types,

null,

data,

fn

);

//

這種做法具有侵入性,多個類似的代碼會相互覆蓋,可采用深度復(fù)制方式調(diào)用原$.fn.bind方法

}

})(jQuery);

希望本文所述對大家jQuery程序設(shè)計有所幫助。

jquery自定義事件有什么用

類似 DOM 的行為:你在 DOM 節(jié)點(包括 document 對象)監(jiān)聽并觸發(fā)自定義事件。這些事件既可以冒泡,也可以被攔截。這正是 Prototype、jQuery 和 MooTools 所做的。如果事件不能擴散,就必須在觸發(fā)事件的對象上進行監(jiān)聽。

命名空間:一些框架需要你為事件指定命名空間,通常使用一個點號前綴來把你的事件和原生事件區(qū)分開。

自定義額外數(shù)據(jù):JavaScript 框架允許你在觸發(fā)自定義事件時,向事件處理器傳送額外的數(shù)據(jù)。jQuery 可以向事件處理器傳遞任意數(shù)量的額外參數(shù)。

通用事件 API:只用 Dojo 保留了操作原生 DOM 事件的正常API。而操作自定義事件需要特殊的發(fā)布/訂閱 API。這也意味著 Dojo 中的自定義事件不具有DOM事件的一些行為(比如冒泡)。

聲明:我們往往需要在預(yù)定義的事件中加入一些特殊的變化(例如,需要Alt鍵按下才能觸發(fā)的單擊事件),MooTools 運行你定義此類自定義事件。此類事件需要預(yù)先聲明,即便你只是聲明他們的名字。任何未聲明的自定義事件不會被觸發(fā)。

理論太抽象,看看 jQuery 框架中如何使用事件。

jQuery 的事件自定義事件還是通過 on 綁定的,然后再通過 trigger 來觸發(fā)這個事件。

//給element綁定hello事件

element.bind("hello",function(){

alert("hello world!");

});

//觸發(fā)hello事件

element.trigger("hello");

這段代碼這樣寫似乎感覺不出它的好處,看了下面的例子也許你會明白使用自定義事件的好處了,參考右邊的代碼。

trigger需要處理的問題

模擬事件對象,用戶模擬處理停止事件冒泡(因為不是通過瀏覽器系統(tǒng)觸發(fā)的,而是自動觸發(fā)的,所以這個事件對象要如何處理?)

區(qū)分事件類型,觸發(fā)標(biāo)準(zhǔn)的瀏覽器事件 和 自定義事件名綁定的處理程序。

擬冒泡機制

當(dāng)事件是 click 類型,自然是本身支持冒泡這樣的行為,通過 stopPropagation 阻止即可

當(dāng)然一些事件,如 focusin 和 blur 本身不冒泡,但 jQuery 為了跨瀏覽器一致性, jQuery 需要在這些事件上模擬了冒泡行為,jQuery 要如何處理?

那么如果是自定義的aaa的事件名,又如何處理冒泡?

ul id="tabs"

li data-tab="users"Users/li

li data-tab="groups"Groups/li

/ul

div id="tabsContent"

div data-tab="users"part1/div

div data-tab="groups"part2/div

/div

script type="text/javascript"

$.fn.tabs = function(control) {

var element = $(this);

var control = $(control);

element.delegate("li", "click", function() {

var tabName = $(this).attr("data-tab");

//點擊li的時候觸發(fā)change.tabs自定義事件

element.trigger("change.tabs", tabName);

});

//給element綁定一個change.tabs自定義事件

element.bind("change.tabs", function(e, tabName) {

element.find("li").removeClass("active");

element.find("[data-tab='" + tabName + "']").addClass("active");

});

element.bind("change.tabs", function(e, tabName) {

control.find("[data-tab]").removeClass("active");

control.find("[data-tab='" + tabName + "']").addClass("active");

});

// 激活第一個選項卡

var firstName = element.find("li:first").attr("data-tab");

element.trigger("change.tabs", firstName);

return this;

};

$("ul#tabs").tabs("#tabsContent");

/script

文章標(biāo)題:jquery的自定義事件,jquery 自定義事件
當(dāng)前地址:http://chinadenli.net/article31/dsipdsd.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)網(wǎng)站營銷品牌網(wǎng)站設(shè)計小程序開發(fā)網(wǎng)站策劃面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司