【问题标题】:jquery click a linkjquery点击链接
【发布时间】:2012-12-31 20:16:36
【问题描述】:

我有一个元素,该元素具有调用 javascript 函数的 href 属性。该元素分为两类:(class="icon32 icon-close")。此链接在具有类.modal 的div 上表示为“X”,用于关闭div。 我的问题是,当用户按下“esc”键时,我可以关闭 div,因此调用链接。我尝试了下面的代码,但它不起作用,尽管出现了警报:

$(document).keypress(function (e) {
    if (e.keyCode == 27) {
        alert('esc was pressed');

        $('.modal>.icon32').click();
    }
});

【问题讨论】:

  • 但它确实有效??或者它不起作用..
  • jQuery UI 对话框不应该已经处理 Esc 了吗?
  • 让我们看看<a>标签的相关HTML和JavaScript。
  • 尝试使用keydown而不是keypress
  • 试试 $('div.modal .icon32').click();

标签: javascript jquery click href


【解决方案1】:

您需要使用 keyup 或 keydown 作为转义键,e.which 在 jQuery 中被标准化:

$(function() {
    $(document).on('keyup', function (e) {
        if (e.which == 27) {
            $('.modal > .icon32').trigger('click'); //NOTE: direct child selector
        }
    });
});

FIDDLE

【讨论】:

    【解决方案2】:

    which 不起作用 - 按下 esc 键(在这种情况下尝试使用 e.which 而不是 keyCode),或者实际的选择器来调用点击? (在这种情况下,通过给元素一个明确的 ID 来测试您的选择器是否错误,并尝试以这种方式选择它以验证它只是您的选择器)。

    另外,为什么你需要“点击”“X”->你不能只“隐藏()”模态 div 元素吗?

    【讨论】:

      【解决方案3】:

      你也可以这样做:

      $(document).keyup(function (e) {
          if (e.keyCode == 27) {
              // As soon as he escape is clicked you do..
              $('.icon32.icon-close').click();
          }
      });
      

      【讨论】:

        【解决方案4】:

        您应该调用 本机 DOM 元素.click() 事件,而不是 jQuery .click() 事件。为此,请使用这样的代码:

        $('.modal>.icon32')[0].click();
        

        【讨论】:

          【解决方案5】:

          如果您使用的是 jQuery 模态对话框,请使用选项 closeOnEscape: false,如下所示:

          $("#div").dialog({
                      modal: true,
                      resizable: false,
                      closeOnEscape: false,
                          buttons: {
                              Ok: function () {
                                 //do something
                              }
                              Cancel: function(){
                                 //do something
                              }
                          }
                      });
          

          【讨论】:

            猜你喜欢
            • 2016-05-24
            • 2012-12-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-24
            • 2012-09-19
            • 2011-09-19
            • 2012-11-28
            相关资源
            最近更新 更多