2

我使用类似于此线程中的一个 jQuery 函数: 在选择框中快速选择整个 optgroup 的简单方法

但是,当我单击<option>now 时,它会选择整个 optgroup,因为 optgroup 包含选项元素。我使用以下代码段:

  $("optgroup").click(function(e) {
    $(this).children().attr('selected','selected');
  });

我的 HTML 看起来像这样:

<optgroup label="Abc">
<option value="8" >Ab</option> 
<option value="7" >C</option></optgroup>

所以点击<option>C</option>选择<option>Ab</option>也是如此。也许我错过了一些明显的东西......

4

2 回答 2

3

我可能是错的,但您可能需要向<option>s 添加一个处理程序以阻止单击事件冒泡。

像这样简单的事情可能会有所帮助:

$("optgroup option").click(function(e) {
    e.stopPropagation();
});
于 2010-08-10T10:24:03.990 回答
2

此外,您可以在您的 optgroup 单击处理程序中检查目标,如果事件的目标实际上是一个选项标签,则可以短路,如下所示:

$("optgroup").click(function(e) {
   if ($(e.target).is('option')) return;
   $(this).children().attr('selected','selected');
});
于 2011-04-11T03:39:46.863 回答