<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
<div id="div1">Click here</div>
</div>
</form>
<script type="text/javascript">
var $ = function(e) { return document.getElementById(e); };
var pageDefault = {
btn1: $('Button1'),
testfx: function() {
alert('test');
},
init: function() {
this.btn1.onclick = function() {
this.testfx();
return false;
}
}
}
pageDefault.init();
</script>
</body>
为什么button1不会点击事件?
答案 0 :(得分:4)
您可能需要使用$('<%= Button1.ClientID %>')
代替$('Button1')
。
有关详细信息,请参阅this文章。
在其他答案中提到的另一个问题是,事件处理程序引用的this
是window
。要解决此问题,您可以按以下方式重写处理程序:
this.btn1.onclick = function() {
pageDefault.testfx();
return false;
}
答案 1 :(得分:1)
this
与该部分代码的范围不同。
试试这个
init: function() {
that = this // create's a that variable which refers to the current scope
this.btn1.onclick = function() {
that.testfx(); // this now points to the scope of pageDefault
// Same as doing pageDefault.testfx();
return false;
}
答案 2 :(得分:0)
因为this
中的this.testfx();
不是pageDefault.testfx()
Button1.testfx()
应该是
this.btn1.onclick = function() {
pageDefault.testfx();
return false;
}
答案 3 :(得分:0)
我认为因为btn1是一个jquery对象。所以使用这个instade:
init: function() {
this.btn1.click(function() {
this.testfx();
return false;
});
}