Javascript jQuery对多个事件使用相同的函数,每个事件针对不同的元素?

Javascript jQuery对多个事件使用相同的函数,每个事件针对不同的元素?,javascript,jquery,events,Javascript,Jquery,Events,我想完成正在做的事情,除了一个转折: 我希望每个事件针对不同的元素 用例是一个选择框,如果没有选择第一个“choose your option”(选择您的选项)选项,它将触发一个事件 $(document).on('change', 'select:nth-child(1)', function(e) ){ do_stuff(); }); $(document).on('click', 'select:not(:first-child)', function(e) ){

我想完成正在做的事情,除了一个转折: 我希望每个事件针对不同的元素

用例是一个选择框,如果没有选择第一个“choose your option”(选择您的选项)选项,它将触发一个事件

$(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
事件是在
元素上触发的,它只是在
本身上触发的。因此,您的基本前提似乎是错误的,因为
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>

空的
选择我
选择拉尔夫
选择查理

玩它:

检查处理程序中的目标。在那里第一个事件的目的是什么?似乎除了第一个事件外,第二个事件将触发所有事件…@oMiKeY在我的代码中,我有一个触发下拉选择更改的样例。但如果选择了第一个选项,我不希望它做任何事情。“更改”事件中也存在代码。该部分依赖于我希望可用的状态变量。我找不到“手动”事件的文档。它是什么?
focusin
使其在单击选择框时触发,而不是在选择选项时触发。当您使用tab键“聚焦”选择时,focusin也会触发。“手动”是我创建的自定义事件,在我手动更改值时触发-请参见最后一行。为什么要触发自定义事件,为什么不使用
触发器(“更改”)
?一件事是,更改的不是
选项。
选择
会改变。因此,我想这意味着在内部,我们必须执行类似于
$(this).find(“>:first child”).index()
的操作。