2009-04-24 21 views
12

Sadece jQuery'deki bir onclick işleyicisini çözmeyi denemekten kurtulamıyorum, böylece daha sonra başka bir işleve bağlanabiliyorum.jquery unbind click

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"> 
    </script> 

    <script src="../../Scripts/jquery-1.3.2.js" type="text/javascript"> 
    </script> 

    <script type="text/javascript" language="javascript"> 
     $(document).ready(function() { $("#btnNext").unbind('click'); }); 
     function hi() {window.alert("hi");} 
    </script> 
</head> 

<body> 

    <input id="btnNext" type="button" value="Next" onclick="hi();" /> 
</body> 
</html> 

Herkes neden tıklamayı bilir:

ete başka bir şey, bir işlev ve çalışır bunu unbind için bir komut dosyası çağıran bir düğme var bu yüzden test sayfasına kod izole ettik event document.ready ne dediysem hi() işlevini çağırmaya devam ediyor?

Teşekkür

html özelliğinde koymak Çünkü

cevap

21

, orada kalır. JQuery ile bağlı değildi, bu yüzden jQuery kullanımı izlemiyor.

http://docs.jquery.com/Events/bind

+0

Deklaratif modda ayarlanan herhangi bir şey bunun gibi açılmayacak anlamına mı geliyor? – antonioh

+3

doğru, belki de bunu $ ("# btnNext") tarafından açabilirsiniz. Attr ('onclick', '') ... ama jQuery ile tüm bağınızı yapmak daha iyi. Daha temiz ve daha az kafa karıştırıcı. Özniteliklerine eklediğiniz javascript hakkında unutmak kolay. ;) –

+0

Güzel biri, şimdi neden işe yaramadığını anlıyorum. Bağladığın gibi yapacağım. Teşekkürler! – antonioh

9

$("a").bind('click',hi); 
$("a").unbind('click',hi); 
Sadece kayıt için, başlangıçta belirtilen onclick niteliğini kaldırmak için removeAttr jQuery işlevini kullanabilirsiniz.

$('#btnNext').removeAttr("onclick"); 

Ayrıca Çad cevaben, bunu yapmak için genellikle daha iyi olduğunu kabul tüm senin jQuery ile bağlama, ama bazı sahip olmak ayrı bağlantıları gerektirir (ASP.NET MVC kullanarak) bir durumda değilim tıklama etkinliği işleyicilerinde model parametreleri. Bu olay işleyicilerinin jQuery aracılığıyla bağlanmasını sağlamak için IMO daha yoğunlaştırılmış olur.

Ben removeAttr işe alamadım, ama bunu yapar
+0

bu, IE'de (tabii ki) çalışmıyor. Herkes IE'de "onclick" etkinliklerini çözmenin bir yolunu biliyor mu? –

0

:

$("#btnNext").click(function(){ return false; }); 

benim TreeView (sadece SelectedNodeChanged için) ASP.NET tarafından sağlanan onclicks kaldırmak isteyen, bu yüzden ele verebilir istemcideki olay. Tabii ki, tıklama fonksiyonum daha fazla "false döndür" ü içeriyordu.

0

Diyelim ki daha sonra kesme istediğiniz olmadığını bile bağlamak gerekmez

$(elem).on("click", function() { ... }); 

var diyelim. Bunu yapmak için

$(elem).unbind(); 

ve bu türden bağımsız olarak işleyicileri kaldıracaktır. Daha spesifik olmak isterseniz, her zaman "tıklama" gibi bir etkinlik türünü geçirebilirsiniz.