我可以在使用jQuery时调用实例函数

时间:2013-01-14 14:41:05

标签: javascript jquery

我有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");}

我该怎么办?

1 个答案:

答案 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();
});