Jquery 在选择菜单上失去焦点时触发事件

Jquery 在选择菜单上失去焦点时触发事件,jquery,Jquery,我有一个表,其中有一堆行,我希望在单击时用选择菜单替换单元格的内容。我想到的是以下几点: 上面的代码几乎可以工作,但由于某些原因,如果未按下鼠标按钮,选择菜单将关闭 现在,当选择菜单失去焦点时,我希望触发一个事件,用原始文本替换选择菜单。我一直在玩blur(),但还没有让它工作。当选择菜单更改时,我希望触发一个事件,在该事件中我可以保存数据,并再次将选择菜单替换为所选选项。1) 要解决您的第一个问题,您需要记住,您正在使用单击事件将选择附加到元素!因此,每次您在上单击选择,您都会触发上的单击。

我有一个表,其中有一堆行,我希望在单击时用选择菜单替换单元格的内容。我想到的是以下几点:

上面的代码几乎可以工作,但由于某些原因,如果未按下鼠标按钮,选择菜单将关闭

现在,当选择菜单失去焦点时,我希望触发一个事件,用原始文本替换选择菜单。我一直在玩blur(),但还没有让它工作。当选择菜单更改时,我希望触发一个事件,在该事件中我可以保存数据,并再次将选择菜单替换为所选选项。

1) 要解决您的第一个问题,您需要记住,您正在使用
单击
事件将
选择
附加到元素!因此,每次您在
上单击
选择
,您都会触发
上的
单击
。编辑
。。。浏览器只是不停地移动,这就是为什么在选择过程中,您必须保持鼠标向下移动的原因

要修复它,只需添加一个
span
并将单击绑定到span,将
select
附加到
。编辑

看看这个例子

相关HTML

<tbody>
  <tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
  <tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
  <tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
</tbody>

2) 要将所选选项文本放置在
.edit
上,您只需将事件处理程序绑定到
更改
,并从所选
选项
收集
HTML

看看这个例子

jQuery

$('.edit').on("change", "select", function() {
  var $t2 = $(this),
      val = $(this).find(':selected').html();

  $t2.parent().html(val);
});
$('.edit').on("change", "select", function() {
  var $t2   = $(this),
      $span = $('<span>'),
      val   = $span.html($(this).find(':selected').html());

  $t2.parent().html(val);
});

3) 要使步骤01 e 02循环,需要将所选
选项
中的值包装到
span
中,以在用户单击文本时保持
单击
事件触发:

看看这个例子

jQuery

$('.edit').on("change", "select", function() {
  var $t2 = $(this),
      val = $(this).find(':selected').html();

  $t2.parent().html(val);
});
$('.edit').on("change", "select", function() {
  var $t2   = $(this),
      $span = $('<span>'),
      val   = $span.html($(this).find(':selected').html());

  $t2.parent().html(val);
});
$('.edit')。在(“更改”、“选择”、函数()上){
变量$t2=$(此),
$span=$(''),
val=$span.html($(this.find(':selected').html());
$t2.parent().html(val);
});
1) 要解决您的第一个问题,您需要记住,您正在使用
单击
事件将
选择
附加到元素!因此,每次您在
上单击
选择
,您都会触发
上的
单击
。编辑
。。。浏览器只是不停地移动,这就是为什么在选择过程中,您必须保持鼠标向下移动的原因

要修复它,只需添加一个
span
并将单击绑定到span,将
select
附加到
。编辑

看看这个例子

相关HTML

<tbody>
  <tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
  <tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
  <tr><td>xxx</td><td class="edit"><span>yyy</span></td></tr>
</tbody>

2) 要将所选选项文本放置在
.edit
上,您只需将事件处理程序绑定到
更改
,并从所选
选项
收集
HTML

看看这个例子

jQuery

$('.edit').on("change", "select", function() {
  var $t2 = $(this),
      val = $(this).find(':selected').html();

  $t2.parent().html(val);
});
$('.edit').on("change", "select", function() {
  var $t2   = $(this),
      $span = $('<span>'),
      val   = $span.html($(this).find(':selected').html());

  $t2.parent().html(val);
});

3) 要使步骤01 e 02循环,需要将所选
选项
中的值包装到
span
中,以在用户单击文本时保持
单击
事件触发:

看看这个例子

jQuery

$('.edit').on("change", "select", function() {
  var $t2 = $(this),
      val = $(this).find(':selected').html();

  $t2.parent().html(val);
});
$('.edit').on("change", "select", function() {
  var $t2   = $(this),
      $span = $('<span>'),
      val   = $span.html($(this).find(':selected').html());

  $t2.parent().html(val);
});
$('.edit')。在(“更改”、“选择”、函数()上){
变量$t2=$(此),
$span=$(''),
val=$span.html($(this.find(':selected').html());
$t2.parent().html(val);
});

回答得很好!我们说话的时候,我正在经历它。非常感谢您对span的巧妙使用。这是循环点击让我难堪!唯一的其他部分是,如果有人点击了选择,它需要恢复到原来的。非常好的答案!我们说话的时候,我正在经历它。非常感谢您对span的巧妙使用。这是循环点击让我难堪!唯一的其他部分是,如果有人单击“选择”按钮,则需要将其恢复为原始状态。