antonioh antonioh - 1 year ago 108
Javascript Question

jquery unbind click

I'm going nuts just trying to unbind an onclick handler from the event in jQuery so I can bind it later on to another function.

I have isolated the code in a test page so there's nothing but the meat, just a button that calls a function and a script that tries to unbind it:

<%@ 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>


Anybody knows why the click event keeps calling the hi() function no matter what I said in the document.ready?

Thanks

Answer Source

Because you put it in the html attribute, it stays there. It was not bound with jQuery so jQuery is not tracking it's usage.

$("a").bind('click',hi);
$("a").unbind('click',hi);

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