我有多个输入的绑定.
$("#foo","#bar","#fooCheckBox","#barCheckBox").bind("change",function() {
// do something here
// do something extra here if $(this) was actually clicked
});
由于还有其他方法可以启动输入的更改,(jquery的.change()方法),有没有办法判断是否实际点击了一个复选框以导致更改事件?
我尝试了焦点但是焦点事件在复选框的更改事件之前触发,因此不起作用.
$("#foo",function() {
// do something here
if($(this).is(":focus")) // do something extra here but focus doesn't happen here for checkBoxes.
});
编辑#1
对不起,我真的不知道如何进一步澄清…我不在乎是否选中了复选框…我知道.is(“:checked”)是什么以及如何使用它.这没有用.我只想知道是否实际点击了复选框以触发更改事件.
编辑#2
我有一个解决方法……我首先绑定点击输入并选择并存储元素的id.然后在我的更改绑定中,我检查更改的元素是否与上次单击的元素相同.
$("input,select").click(function() {
var myId = $(this).attr("id");
lastClickedStore.lastClicked = myId;
});
然后在更改绑定中,我只检查当前ID是否等于最后点击的Id.
$("#foo",function() {
// do something
if(lastClickedStore.lastClicked == $(this).attr("id")) // do something else.
}
最佳答案
绑定点击而不是更改.当使用键盘更改复选框的状态时,仍会触发click事件,但在这种情况下event.pageX和event.pageY将为0,因此您可以编写:
原文链接:https://www.f2er.com/jquery/428570.html$("#foo,#bar,#fooCheckBox,#barCheckBox").click(function(event) {
// Do something here...
if (event.pageX > 0) {
// Check Box was clicked,do something extra here...
}
});