我有2个方法,一个是内部方法,另一个是实例方法,
当我调用我的内部函数(onkeydown="javascript:return checkChatBoxInputKey();"
)时,它的效果很好,
但是,当我尝试激活onclick
事件(onclick="this.CloseChatBox();
)时,我收到以下错误:
0x800a01b6 - Microsoft JScript运行时错误:对象不支持 属性或方法' CloseChatBox'
这是我的代码:
function ChatBox(){
// Methods
this.CloseChatBox = ChatBox.CloseChatBox;
// Adding new chat box to page
$(" <div />").attr("id", "chatbox")
.html('<div class="chatboxhead">' +
'<a href="javascript:void(0)" title="Close chat box" onclick="this.CloseChatBox();">X</a>' + // This line fails to work
'</div>' +
'<div class="chatboxbody">' +
'<textarea onkeydown="javascript:return checkChatBoxInputKey();"></textarea>' +
'</div>')
.appendTo($("body"));
$("#chatbox_" + this.CallId).show();
return true;}
function checkChatBoxInputKey(){
alert("checkChatBoxInputKey");}
ChatBox.CloseChatBox = function (){
alert("CloseChatBox");}
我该怎么办?
答案 0 :(得分:1)
在onclick
中,this
<a>
标记本身不是,无论ChatBox
函数是什么。
因此,您收到错误是因为<a>
代码没有CloseChatBox
方法。
我高度建议不使用属性进行事件绑定。使用实际的事件处理程序。将类添加到<a>
标记,然后使用jQuery将事件绑定到它。
HTML:
<a href="javascript:void(0)" title="Close chat box" class="closeChatBox">X</a>
JavaScript(放在ChatBox
函数之外,$(document).ready
内):
$('a.closeChatBox').click(function(){
ChatBox.CloseChatBox();
});