【问题标题】:Jquery keyup event not working when using classes使用类时Jquery keyup事件不起作用
【发布时间】:2013-06-17 07:26:21
【问题描述】:

我有一个带有replyComment 类的输入字段,并且我有一个事件处理程序来确定是否按下了回车键。

<input class="replyComment" placeholder="Enter Reply" type="text">
$('#replyComment').keyup(function (e) {
   alert(e.keyCode);
   if (e.keyCode == 13) {
      alert('Enter key was pressed.');
   }
});

问题是事件不会触发。 问候,

【问题讨论】:

    标签: jquery events handler


    【解决方案1】:

    正如大家所提到的,“#”指的是由 id 表示的元素。 由于您使用的代码 ->

    <input class="replyComment" placeholder="Enter Reply" type="text">
    

    指的是您需要通过 .选择器。所以理想情况下你的代码应该像

        $(".replyComment").keyup(function(){});
    

    如果在页面加载时具有此类的元素不存在于 DOM 中,则这也可能不起作用。如果这是在您的页面被某些 JS 事件或任何东西加载之后在您的页面中引入的,那么您必须使用 "on" 选择器将其与 DOM 绑定。

    所以你的代码应该是这样的

    jQuery(document ).on( "keyup", ".replyComment", function(){ });
    

    希望对你有帮助

    快乐学习:)

    【讨论】:

      【解决方案2】:

      # 指定一个id 选择器,使用前导句点(.)指定一个类选择器

      $('.replyComment').keyup( ... )
      

      【讨论】:

      • 我保证这个选择器适用于那个类...你动态添加这个元素吗?
      • 从服务器端代码添加并不意味着在此上下文中动态添加到 DOM。
      • 所以发生的情况是页面执行了一个 ajax 调用,该调用转到 ashx Web 服务,该服务返回 cmets 的 html,每个 replt 下方是那个文本框。当用户点击进入时,我希望它做一个事件。
      • 在这种情况下,代码会被放入客户端的 DOM 中......所以使用 on 而不是显式绑定到事件:$('.replyComment').on('keyup', function(e) { });
      【解决方案3】:

      请在您的代码中使用 (".") 而不是 ("#"),如下所示:

      $('.replyComment').keyup(function (e) {
         alert(e.keyCode);
         if (e.keyCode == 13) {
            alert('Enter key was pressed.');
         }
      });
      

      只要你想触发一个元素,就不要使用“.”。代替 ”#”。 ("#") 总是使用 id 元素。

      希望它能解决你的问题

      【讨论】:

        猜你喜欢
        • 2012-08-23
        • 2018-04-07
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多