我有一个用于多个输入的绑定。
$("#foo", "#bar", "#fooCheckbox", "#barCheckBox").bind("change", function() {
// do something here
// do something extra here if $(this) was actually clicked
});
由于还有其他方式来启动输入更改(例如jquery的.change()方法),那么有没有办法判断是通过单击复选框来引起更改事件的呢?
我尝试使用focus,但是focus事件在复选框的更改事件之前触发,因此无效。
$("#foo", "#bar", "#fooCheckbox", "#barCheckBox").bind("change", 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", "#bar", "#fooCheckbox", "#barCheckBox").bind("change", function() {
// do something
if(lastClickedStore.lastClicked == $(this).attr("id")) // do something else.
}