javascript - 必须在事件触发之前写入警报

标签 javascript jquery

当用户单击名为“winners”的表时,我的 jquery 代码片段出现问题。代码

 $('#winners tr').click(function() {
      alert(223);
    });

仅当我在此代码片段之前放置警报时才会触发,如下所示:

  alert(1);
  $('#winners tr').click(function() {
    alert(223);
   });

完整代码如下所示。问题出在底部的代码片段。

 <script type="text/javascript" src="http://www.google.com/jsapi"></script>
  <script type="text/javascript">
  google.load("jquery", "1.7.1");

  function listen(last_modified, etag) {
       $.ajax({
           'beforeSend': function(xhr) {
               xhr.setRequestHeader("If-None-Match", etag);
               xhr.setRequestHeader("If-Modified-Since", last_modified);
           },
           url: '/test/sub',
           dataType: 'text',
           type: 'get',
           cache: 'false',
           success: function(data, textStatus, xhr) {
                     /*REMOVED CODE*/
               });

               /* Start the next long poll. */
               listen(last_modified, etag);
           },
           error: function(xhr, textStatus, errorThrown)
           {
             //$('#data').prepend(textStatus + ' | ' + errorThrown);
           }
       }); 
   }; 

   google.setOnLoadCallback(function() {
       /* Start the first long poll. */
       /* setTimeout is required to let the browser know
          the page is finished loading. */
       setTimeout(function() {
           listen('Thu, 1 Jan 1970 00:00:00 GMT', '0');
       }, 500);
   });
    //alert(1);
    $('#winners tr').click(function() {
      alert(223);
    });
  </script>

感谢您的帮助!

最佳答案

问题是您的代码在元素出现在 DOM 中之前执行,因此 $('#winners tr') 为空,除非您有此警报阻止脚本。

通常的解决方案是将整个 script 元素放在 body 元素的末尾,而不是放在 head 内部。或者您可以将代码包装在 jquery 就绪事件处理程序中。

当您使用 Google Load 时,最好的方法是将点击绑定(bind)代码移至您传递给 google.setOnLoadCallback 的回调中。

关于javascript - 必须在事件触发之前写入警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23066886/

相关文章:

javascript - 如何在同一元素上使用 .hover 和 .click

jquery - 让 Jquery 在可放置和可拖动的 <div> 中可排序

javascript - 类型错误 : "Not a function" using "this" keyword in a function

javascript - 如何使用 Jest 测试函数中的函数

javascript - 如何避免在 Javascript 中将地址解析为 float

javascript - 如何将变量内容作为参数传递给函数

javascript - 通过 session 存储获取所有表行值

javascript - 在一页上使用多个图像/链接在文本悬停上隐藏和显示图像

javascript - 将 JS 每个循环中的 json 数据传递到 JS 函数时出现意外的输入错误结束

jquery - jQuery(function($){something}); 是什么意思?做?