【问题标题】:jQuery use $(document).click event as a 'cancel selection' eventjQuery 使用 $(document).click 事件作为“取消选择”事件
【发布时间】:2015-07-25 17:03:57
【问题描述】:

我正在使用 jQuery 构建一个 app.net 页面以进行 DOM 操作 (JS Fiddle here)。当我单击表格上的某个<td> 时,它成为未来操作的目标。我想添加代码,以便在表格外的任意位置单击将取消定位 <td>(这意味着在后台单击应该充当取消选择事件)。

this question 的答案对我没有帮助,因为: 答:我不想使用stopPropagation(),因为this article 加上我的代码中有许多单击事件处理程序,我将不得不停止传播)。 B. 我在页面上有其他元素(按钮、文本输入字段)不应充当取消选择事件)。

【问题讨论】:

  • 如果您只留下问题的摘要,并用一个工作示例和您提到的其他讨论的链接替换整个不必要的文本墙,这将非常有帮助。
  • 编辑了我的问题...感谢您的评论。

标签: jquery asp.net events


【解决方案1】:

如果没有更多细节,似乎在目标单元格上切换活动类会按照您的建议进行。

var $table = $('#myTable').on('click', 'td', function(){
    $table.find('.active').removeClass('active');
     $(this).addClass('active');
});

然后要删除使用表外的事件,只需检查目标是否在表中

$(document).click(function(e){
  if(!$(e.target).closest('#myTable').length){
      $table.find('active').removeClass('active');
  }
});

【讨论】:

  • 感谢您的评论。我试过这个,但正如我所提到的 - 我的页面上有其他元素(按钮和文本字段),我不希望它们触发 removeClass
  • 那么您需要以示例 html 的形式提供更多详细信息...在演示中...jsfiddle.net、plnkr.co 等。还可以将表单上的点击排除为目标
  • 为 JSFiddle 添加了所有必要的数据。
  • OK ...在closest() 中添加了一个额外的选择器 ....jsfiddle.net/nLLw0why 也可以将范围缩小到#container :input, #container button
  • 谢谢!不知道可以像这样引用多个选择器。
猜你喜欢
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 2011-05-03
  • 2011-01-02
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多