我想知道这是chrome或jQuery中的错误,还是我误解了.live函数的用法
$('.input_form input[type="radio"]').live({
'change':function(){
console.log("this is a radio button");
}
});
当我在所有主流浏览器中单击带有“input_form”类的单选按钮时,上面的代码会将输出发送到控制台窗口
但是以下代码:
$('.input_form input[type="radio"]').live({
'focus':function(){
console.log("this is a radio button");
}
});
将输出发送到所有浏览器的控制台窗口,但谷歌浏览器(10)
除外唯一的区别是从“更改”变为“焦点”作为我的事件触发器。
任何人都可以解释一下吗?
答案 0 :(得分:1)
如果使用jQuery 1.7+,您应该这样做:
$(document).on({
change: function(){
console.log("this is a radio button on change");
},
focus: function() {
console.log("this is a radio button on focus");
}
}, '.input_form input[type="radio"]');
如果仍然使用直播,而不需要地图,请执行:
$('.input_form input[type="radio"]').live('focus', function(){
console.log("this is a radio button");
});
或使用地图:
$('.input_form input[type="radio"]').live({
focus: function(){
console.log("this is a radio button");
}
});
在webkit中,只有在使用制表符时,才会自动点击单击按钮。 但是你可以将焦点设置为元素,尽管为什么你这样做会超出我的范围,但它有可能:
$(document).on({
click: function(){
console.log("this is a radio button on click");
$(this).focus();
},
focus: function() {
console.log("this is a radio button on focus");
}
}, '.input_form input[type="radio"]');
答案 1 :(得分:0)
我不确定,但认为您必须使用focusin
而不是focus
。
$('.input_form input[type="radio"]').live({
'focusin': function(){
console.log("this is a radio button");
}
});
至少在一段时间之前focusin
是处理live
和focus
的规范化事件。
blur
被称为focus out
注意:
当focusin事件或其中的任何元素获得焦点时,focusin事件将被发送到该元素。这与焦点事件的区别在于它支持检测父元素上的焦点事件(换句话说,它支持事件冒泡)。
答案 2 :(得分:0)
检查这个问题[1],它指出焦点事件不会在chrome和safari中的单选按钮上被触发。