关于锚标签Signal R中的click事件绑定

时间:2013-04-27 10:54:55

标签: jquery asp.net signalr signalr-hub

您好我正在使用像这样的ajax调用绑定我的聊天好友列表

$.ajax({
            type: "POST",
            url: "/getdata.asmx/GetUserInfo",
            data: "{'Id':'" + gorge + "'   }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); },
            success: function (xml) {
                //alert('success');
                $('#frndcontact li').remove();
                // $("#frndcontact").innerhtml("");
                // DivMainContainer                
                var obj = jQuery.parseJSON(xml.d);
                // alert(data);
                if (obj.length > 0) {
                    for (var i = 0; i < obj.length; i++) {
                        // var name = obj[i].name;
                        var objname = "'" + obj[i].name + "'";
                        //alert(name);
                        var H = '<li style="font-size:11px;font-family:\'lucida grande\',tahoma,verdana,arial,sans-serif;">' +
                            '<img alt="" height="18px" width="18px" id="test-' + obj[i].friendid + '" src="Images/offline.png" />' +
                            '<a class="UserItem" id="test-' + obj[i].friendid + '" >' + obj[i].name + '</a>' +
                            '</li>'
                        $("#frndcontact").append(H);

                    }

                }

            }
        });

然后在下面是我的Signal R Code

  $.connection.hub.qs = "Id=" + gorge;

        var chat = $.connection.chat3Hub;
        chat.client.foo = function () { };

        $.connection.hub.start(function () {
            // chat.server.OnConnected();
            //  chat.server.getAllOnlineStatus();
        });

        chat.client.disconnect = function (connectionId, userList) {
            $(userList).each(function (index, obj) {
                $("#test-" + obj).attr('src', 'images/offline.png');
                $("#test-" + obj).next('.UserItem').removeClass('online');
            });
        };
        chat.client.disconnectuservialogout = function (connectionId, userList) {
            $(userList).each(function (index, obj) {
                $("#test-" + obj).attr('src', 'images/offline.png');
                $("#test-" + obj).next('.UserItem').removeClass('online');

            });
        };
        chat.client.joined = function (connectionId, userList) {
            $(userList).each(function (index, obj) {
                $("#test-" + obj).attr('src', 'images/online.png');
                $("#test-" + obj).next('.UserItem').addClass('online');


            });
        };
        $('.logout').click(function () {
            chat.server.disconectonlogout();
        });
        **//THIS CODE IS NOT WORKING DONT KNOW WHY**
        **$('.UserItem').click(function () {
            var chatWindow = $("#divChatWindow").clone(true);
            $("#chatContainer").append(chatWindow);
        });**

        // $.connection.hub.server.connected = function () { }
    });

但是当我执行下面的代码时,我将绑定事件绑定到具有类Useritem的锚标签。但是当我在firefox调试器的javascript中放置断点时它不会来。所以该怎么办,因为我无法绑定click事件锚标签..请帮帮我

1 个答案:

答案 0 :(得分:1)

它不起作用,因为$('.UserItem').click()声明仅适用于正在执行时存在的项目。阅读http://api.jquery.com/on/以了解如何在将来向所有元素添加事件处理程序。

$(document).on("click", ".UserItem", function () {
    var chatWindow = $("#divChatWindow").clone(true);
    $("#chatContainer").append(chatWindow);
});

上述内容应该让你朝着正确的方向前进。