0

如何将 $('#foo').click() 和 $('#bar').change() 组合在一个相同的函数中?#bar 可能不会被点击触发,#foo 不会被改变触发。

所以假设:

$('#foo').click() + $('#bar').change() (function{
  //...
});

不是我要找的:

function foobar() {
  // ...
}
$('#foo').click(function{
  foobar();
});
$('#bar').change(function{
  foobar();
});

相关的 HTML:

<select id="bar">
  <option>dummy1</option>
  <option>dummy2</option>
</select>
<button id="foo">foo</button>
4

2 回答 2

5

如果您不想clickon#barchangeon ,这确实是唯一的方法#foo

$( '#foo, #bar' ).on( 'click change',  function ( event ) {
    if( ( event.type == 'click' && event.target.id == 'foo' )
        || ( event.type == 'change' && event.target.id == 'bar' ) ) {

        //process event here
    };
} );

尽管我认为您列出的想要的方法是更好的方法。哪个更容易阅读和理解?:

function foobar() {
    // ...
};

$( '#foo' ).click( foobar );
$( '#bar' ).change( foobar );
于 2013-03-03T03:48:07.743 回答
0
$(":input").click(function(){
    alert($(this).attr('id'));
    foobar(); //you can pass here the id as parameter to your function
})

http://jsfiddle.net/5vgKm/

于 2013-03-03T03:53:43.100 回答