當前位置:首頁 » 代理許可 » 事件代理

事件代理

發布時間: 2020-12-03 00:18:49

㈠ js事件委託和ja事件代理有什麼區別

事件委託:通俗的講,事件就是onclick,onmouseover,onmouseout,等就是事件,利用冒泡的原理,把事件加到父級上,觸發執行效果
-------------------------------------------------------------------------
如果我們不想或不能夠直接操縱目標對象,我們可以利用delegate創建一個代理對象來調用目標對象的方法,從而達到操縱目標對象的目的。代理對象要擁有目標對象的引用。這就是事件代理(也就是說不會直接去操縱對象)

㈡ 在js中,事件代理和事件委託是什麼區別啊,怎麼解釋啊

事件代理和事件委託實際上說的是同一件事,只是站在不同的角度來說的。比如說元素A把事件處理委託給自己的父元素B去處理,那麼A就是事件委託方,而B就是事件代理方,兩者參與的實際上是同一件事。

㈢ vue 在 v-for 時給每項元素綁定事件需要用事件代理嗎為什麼

不需要,直接監聽就行,如果循環的是組件,而且組件沒有支持該事件,需要加native修飾符(一般UI庫會對這個做支持,兼聽不到事件的時候才需要加)

㈣ android中有沒有事件代理模式

安卓裡面有監聽事件的,具體操作如下:
//1.首先讓你的Activity或者fragment實現View.OnClickListener介面比如 MainActivity extends AppCompatActivity implements View.OnClickListener{

//比如xml裡面有很多Button Button button1;
Button button2;

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
}

//2.添加監聽器,比如 button1.setOnItemClickListener(this);
button2.setOnItemClickListener(this);

//3.重寫onClick方法,根據不同的View的id進行判斷點擊的是哪一個View控制項 @override public void onClick(View v){
//你可以通過這個view就可以判斷你當前的頁面裡面有哪些控制項。 switch(v.getId()){
case R.id.button1: //假如點擊的是button1,這里就可以執行與之相應的邏輯操作。。 break;
case R.id.button2: //假如點擊的是button2,這里就可以執行與之相應的邏輯操作。。 break;
}
}
}

㈤ Javascript中的事件代理是怎麼工作的

事件代理:抄
用到了兩個在JavaSciprt事件襲中常被忽略的特性:事件冒泡以及目標元素。
當一個元素上的事件被觸發的時候,比如說滑鼠點擊了一個按鈕,同樣的事件將會在那個元素的所有祖先元素中被觸發。這一過程被稱為事件冒泡;這個事件從原始元素開始一直冒泡到DOM樹的最上層。
任何一個事件的目標元素都是最開始的那個元素,在我們的這個例子中也就是按鈕,並且它在我們的元素對象中以屬性的形式出現。使用事件代理,我們可以把事件處理器添加到一個元素上,等待一個事件從它的子級元素里冒泡上來,並且可以得知這個事件是從哪個元素開始的。

㈥ 原生javascript 怎麼事件代理 addeventlistener

事件代理就復好比,有一個小隊制,共十人,給其中一人綁上一個大喇叭,你要找張三的時候,直接告訴綁上大喇叭的人,大喇叭一喊:咱們隊伍中叫張三的給我出來。這個過程就叫做事件代理。
http://www.cnblogs.com/ARMdong/articles/javascript_delegate.html

㈦ 列舉C#代理和事件的幾種常用方法,代理對象、代理控制項等 不一定要能運行 主要參考下過程。麻煩大俠!加分

事件通過委託 執行方法 再看看多播委託 回調函數 再結合網上的例子 練習下 就明白了

㈧ 請用兩段完整的代碼說明js 中普通事件綁定和事件代理的區別並說明事件代理相對於事件綁定的優勢

  • 普通

<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
</head>
<body>

<inputtype="button"id="btn"value="點擊">

</body>
<script>
document.getElementById('btn').onclick=function(){
alert(this.value)
}
</script>
</html>
  • 委拖

<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
</head>
<body>
<inputtype="button"id="btn"value="點擊">
</body>
<script>


document.body.onclick=function(e){
if(e.target.id=='btn')alert(e.target.value);
}</script>
</html>
  • 優勢

如果有大量動態生成的元素,普通的綁定方式會有很多不便,委託的方式有更好的性能和靈活性。

<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
</head>
<body>
<inputtype="button"id="new"value="新建">
</body>
<script>

vari=0;
document.getElementById('new').onclick=function(){
varnode=document.createElement('BUTTON');
vartext=document.createTextNode('委託-'+i);
varattr_id=document.createAttribute('id');
attr_id.value='i_'+i;
node.setAttributeNode(attr_id);
node.appendChild(text);
document.body.appendChild(node);
i++;
}
document.body.onclick=function(e){
if(e.target.tagName=='BUTTON')
alert('id='+e.target.id);
}

</script>
</html>

㈨ jquery中以下哪些方法可以實現事件代理

H5e教育Html5為您解答:
1.事件代理的原理和意義

實現原理是利用了瀏覽器的事件冒泡和事件源(target)。
在js中事件會冒泡到父級節點,所以我們可以在父級節點進行事件代理。例如一個使用jQuery的函數:
$("#tab td").click(function(){
$(this).css("background","red");
}) ;

上面的函數給一個tab的td加了一個單擊事件,但是如果表格1000行,就得綁定1000次,
$("#tab").bind("click",function(ev)){
var $obj=$(ev.target);
$obj.css("background","red");
}

以上用bind函數將click綁定到了tab上,從而實現事件代理。

2.jQuery中的綁定函數

(1).bind()為每個匹配元素的特定事件綁定事件處理函數
$("#niu").bind('click',function(){
alert("hello niuniu");
});

此代碼把id為niu的元素響應事件click,並顯示警報。使用bind綁定多個事件時,可以這樣
$("#niu").bind('mouseenter mouseleava',function(){
$(this).css("background","yellow");
});
$("#foo").bind({
click:function(){
},
mouseenter:function(){
}
});

(2).delegate()指定的元素(屬於被選元素的子元素)添加一個或多個事件處理程序,並規定當這些事件發生時運行的函數
$("table").delegate("td","click",function(){
$(this).toggleClass("chosen");
});

(3).on在選擇元素上綁定一個或多個事件的事件處理函數
function greet(event) { alert("Hello"+event.data.name); }
$("button").on("click", { name: "Karl" }, greet);
$("button").on("click", { name: "Addy" }, greet);

(4).live給所有匹配的元素附加一個事件處理函數,即使這個元素是以後再添加進來的
$("a").live("click", function() { return false; })

以上是常用的綁定函數。
技術文檔引用:
自從.live()方法處理事件一旦傳播到文檔的頂部,live事件是不可能停止傳播的。同樣地,.delegate() 事件將始終傳播給其中包含的被委託元素;同時,任何在 DOM 樹中,比這些元素低的元素上綁定的相同事件,在 .delegate() 事件被調用的時候,也會被觸發。因此,如果要在事件中阻止委託事件被觸發,可以調用event.stopPropagation()或者返回false防止委派處理程序冒泡。

簡單來說,.bind()是直接綁定在元素上,而.live()和.delegate()則是通過冒泡的方式來綁定到元素上的。.bind()方法只能給當前存在的元素綁定事件,對於事後採用JS方式新生成的元素無效,而live方法可以對後生成的元素也可以綁定相應的事件。

熱點內容
美發店認證 發布:2021-03-16 21:43:38 瀏覽:443
物業糾紛原因 發布:2021-03-16 21:42:46 瀏覽:474
全國著名不孕不育醫院 發布:2021-03-16 21:42:24 瀏覽:679
知名明星確診 發布:2021-03-16 21:42:04 瀏覽:14
ipad大專有用嗎 發布:2021-03-16 21:40:58 瀏覽:670
公務員協議班值得嗎 發布:2021-03-16 21:40:00 瀏覽:21
知名書店品牌 發布:2021-03-16 21:39:09 瀏覽:949
q雷授權碼在哪裡買 發布:2021-03-16 21:38:44 瀏覽:852
圖書天貓轉讓 發布:2021-03-16 21:38:26 瀏覽:707
寶寶水杯品牌 發布:2021-03-16 21:35:56 瀏覽:837