【问题标题】:Call SignalR hub method with dynamically created button使用动态创建的按钮调用 SignalR 集线器方法
【发布时间】:2015-05-17 06:42:54
【问题描述】:

我有一个问题,按钮点击在动态创建时没有触发,

我知道,here is the solution

问题是这样的:

我正在使用 SignalR。启动聊天中心时,我必须声明单击事件(以调用某些中心方法)。请看下文

按钮点击在这种情况下有效

  $(document).on('click', "#chatlist li .gobtn", function (e) {
            var id = $(this).closest("li").data("message-id");
        }); 

但我应该从这里调用它

$.connection.hub.start().done(function () {
      //button click not fires here but it must be here
     $('#chatlist li .gobtn').click(function () {
      var id = $(this).closest("li").data("message-id");
      chat.server.sendAnswer(id);
      })
    })

如果您有任何解决问题的想法,请提供帮助。

【问题讨论】:

  • 不确定我明白了。在done() 函数中,您尝试调用对具有class 的按钮的点击 - .gobtn - 以传递message-id。如果按钮都使用相同的类,那么您触发点击的是哪个按钮?换句话说,当您在集线器启动时获得data 属性时,$(this) 是什么?集线器是否启动一次,作为初始化?
  • @lesssugar 有许多具有相同类的按钮,这个事件可以为每个按钮触发。 $this 将被点击的按钮
  • @MuradQaribov 在我写的关于这个修复的问题的顶部。聊天中心完成后我需要声明事件

标签: javascript jquery asp.net signalr signalr-hub


【解决方案1】:

如果你像下面这样改变你的代码,我认为它可以工作

    var chat;
var _sendAnswer;
$(function () {
    var chat = $.connection.chatHub;
    $.connection.hub.start().done(function () {
        _sendAnswer = function sendAnswer(id) {
            chat.server.sendAnswer(id);
        }
    });

    $(document).on('click', "#chatlist li .gobtn", function (e) {
        var id = $(this).closest("li").data("message-id");
        if (_sendAnswer != undefined && typeof _sendAnswer == 'function') {
            _sendAnswer(id);
        }
    }); 
});

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-18
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多