jquery

2013-12-10 89 views
0

通過委託在選定的div應用點擊功能什麼是最好的方式添加相反的不是jQuery的?jquery

<div class="line-item"> 
<div class="thumb"> 
    Image goes here 
</div> 
<div class="title"> 
    Title goes here 
</div> 
<div class="destroy"> 
    Destroy Button goes here 
</div> 

這裏是Java腳本

$('div.line-item').delegate('div:not(".destroy")', 'click', function() { 
alert('hi'); 
}) 

我要的是應用 「點擊」 只是該分區具有.destroy類

這裏的工作演示: http://jsfiddle.net/trVKF/110/

+0

爲什麼就不能'$( 'div.line項目')。在( '點擊', '.destroy',...'? – techfoobar

+0

在jQuery 1.7, '.delegate()'已被'.on()'方法取代 – nkmol

+0

我認爲重要的是要理解爲什麼有人必須使用舊版本的庫。只是說':) –

回答

1

將是實現你需要什麼?

$('div.line-item').delegate('div:not(".destroy")', 'click', function() { 
    alert('hi'); 
}).delegate(".destroy", 'click', function(){ 
    alert('bye'); 
}) 

http://jsfiddle.net/trVKF/112/

或者:

$('div.line-item').delegate('div', 'click', function(e) { 
    if($(e.target).is(".destroy")){ 
     alert("bye"); 
    }else{ 
     alert("hi"); 
    } 
}); 

http://jsfiddle.net/trVKF/113/

1

您可以使用:

$('div.line-item').delegate('.destroy', 'click', function() { 
    alert('hi'); 
}) 

在本Demo

+0

' .on()'應該用來代替'delegate()' – idmean

+0

@wumm - 小提琴使用jQuery 1.5,它沒有'.on()' – techfoobar

+0

我沒有看到。 – idmean

2

使用jQuery的新版本,並做到:

$('div.line-item').on('click', '.destroy', function() { 
// ^^ static parent | ^^ event | ^^ dynamic element bound to handler 
    alert('hi'); 
}); 
+0

小提琴使用jQuery 1.5(不確定OP的意思,但確實如此),它沒有'.on()' – techfoobar

+1

@techfoobar - 然後升級是按順序的。 – adeneo

+0

是的,1.5太舊了。然而,OP需要確保他不依賴於其他代碼/插件,這些代碼/插件可以在1.5之後被刪除。 – techfoobar

1
$('div.line-item').on('click', '.destroy', function() { 
    alert('hi'); 
}); 

如果您在使用jQuery的新版本。

1

試試這個綁定click事件而不使用委託。

$('.line-item > .destroy').click(function(){ 
     //your code goes here 
}); 

DEMO