0

我想将元素 .editor 集中在每次点击 .step 上。问题是我不想点击按钮:.new、.delete、.copy、.resize。如果我点击按钮,我没有集中注意力,只是执行单独设置的其他功能。我怎样才能做到这一点。这是html结构:

<div class="step">
 <div class="editor"></div>
   <div class="new"></div>
   <div class="delete"></div>
   <div class="copy"></div>
   <div class="resize"></div>
</div>

这是我错误的 jQuery:

$(document).on('click', '.step', function() {
    if ( $(this)  !== $(".sort-slides") || $(".draggable_on") || $(".copy-slide") || $(".new-slide") || $(".delete-slide")  )
    $(this).find(".editor").focus();
});
4

2 回答 2

1

首先,您的 if 语句不正确。

if (x == 1 || 2 || 3 || 4 || 5) { ... }

不一样

if (x == 1 || x == 2 || x == 3 || x == 4 || x == 5) { ... }

该语句将始终返回 true,因为除 0 之外的任何内容都是真实的。因此,即使 x 为 0,该语句也是

if (false || true || true || true || true) { ... }

此外,$(this)将始终是.step捕捉点击事件的 div,而不是它的任何子级。

于 2013-09-24T08:38:07.203 回答
1

在 JavaScript 中,当一个事件在一个元素上触发时,它会在该元素的每个祖先上触发。这称为事件传播false可以通过从事件处理程序返回来停止这种行为。

$(".new, .delete, .copy, .resize").click(function(event) {

  // do something
  alert("click");

  // prevent the event from propagating
  return false;
});

$(".step").click(function() {

  // do something
  alert("focus");
});

这是 CodePen 上的一个示例

但是,正如 Gupta 所说,该focus功能仅适用于<input>,<select><a>标签。

于 2013-09-24T08:42:10.770 回答