繁体   English   中英

jQuery对于多个事件具有相同的功能,每个事件针对不同的元素吗?

[英]jQuery same function for multiple events, each event targeting different elements?

我想完成这里的工作但要有所不同:我希望每个事件都针对不同的元素。

用例是一个选择框,如果选择了第一个“选择您的选项”之外的任何选项,则应触发事件

$(document).on('change', 'select:nth-child(1)', function(e) ){
  do_stuff();
});


$(document).on('click', 'select:not(:first-child)', function(e) ){                         
  do_stuff();
});

是否有一种组合的,更简洁的方式来执行此操作,而无需创建do_stuff()

没有事件触发两次怎么办?

测试功能中的位置。

$(document).on("change click", "select option", function(e) {
    if ($(this).index() == 0) {
        // do stuff for first child
    } else {
        // do stuff for other children
});

但是,我不认为change事件是在<option>元素上触发的,它只是在<select>本身上触发的。 所以您的基本前提似乎是错误的,因为change事件永远不会在select:nth-child(1)上触发。

您有一个答案,但也可以使用以下方法的组合:

注意:转到页面上的元素以触发focusin事件

$('#selectcontainer').on('change focusin manual', ".myselectthing", function(e) {
  var selectionIndex = $(this).prop('selectedIndex');
  $('#results').text("this type " + e.type + ":" + $(this).val() + " : " + selectionIndex);
});

$('#selectcontainer').find('.myselectthing').val("ralf").trigger("manual");

一些示例标记:

<div id="results">
  empty
</div>
<div id="selectcontainer">
  <select class="myselectthing">
    <option value="me">choose me</option>
    <option value="ralf">choose ralf</option>
    <option value="charlie">choose charlie</option>
  </select>
</div>

玩它: https : //jsfiddle.net/96mgswas/1/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM