移动safari还是jquery BUG?在html标记标签onclick="&引用;然后单击()失败
我发现,下面的代码确实有效移动safari还是jquery BUG?在html标记标签onclick="&引用;然后单击()失败,jquery,html,input,safari,click,Jquery,Html,Input,Safari,Click,我发现,下面的代码确实有效 <label onclick="alert('alert')"> <input id="testinput" type="radio" name="test" autocomplete="off" /> clicktest </label> 对于那些遇到相同问题的人,这里是我的解决方法,它显然只针对input[type=“radio”]的用法,并在无线电输入发生变化时读取单击标签的结果: $('section.ta
<label onclick="alert('alert')">
<input id="testinput" type="radio" name="test" autocomplete="off" />
clicktest
</label>
对于那些遇到相同问题的人,这里是我的解决方法,它显然只针对input[type=“radio”]
的用法,并在无线电输入发生变化时读取单击标签的结果:
$('section.tabbox input[type=radio]').change(function(){
var el = $(this);
if (el.is(':checked')) {
var tbb = el.closest('section.tabbox');
var index = tbb.find('input[type=radio]').index(el);
//--- do more stuff with index
//--- e.g. $('section.tabbox').find('label:eq('+index+').addClass('clicked')
}
});
但是,如果inputs属性已被选中,但需要标签上的click事件,该怎么办?只需更改两次:-)
我只在iPad mini上的mobile safari中发现了这种行为,其他浏览器似乎没有受到影响。在safari或jquery中,这是一个bug吗?希望我找到的这个解决方案将来会稳定(如有必要,将发布更新) 我发现
- 桌面Firefox和桌面Safari在单击
label
- 桌面Chrome同时触发和,单击
标签的事件,然后聚焦/单击
输入
- mobile Safari仅发射点击
输入上的事件
navigator.userAgent
,只有在用户代理检测到移动Safari时才接受输入[type=radio]上的点击事件(欢迎改进)。此函数收集onclick=“…”
以及。从相关标签单击(…)
事件(通过其的属性),并以编程方式触发它
$('input[type=radio]').on('click focus',function(){
var el = $(this);
el.blur();
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && /AppleWebKit/i.test(navigator.userAgent)) {
$('label[for='+el.attr('id')+']').trigger('click');
}
});
这似乎是一个值得注意的解决办法
更新日期2017/01/03
取消了焦点
符号,因为它没有意义。现在仅使用单击
表示法,如果存在与
-属性匹配的标签
,则现在还包括测试。这个检查对我来说似乎很重要,因为在同一页上可能会出现两种html标记的可能性(参见上面问题的开头):
$('input[type=radio]').on('click',function(){
var el = $(this);
var label = $('label[for='+el.attr('id')+']');
if (label.length && /iPhone|iPad|iPod/i.test(navigator.userAgent) && /AppleWebKit/i.test(navigator.userAgent)) {
label.trigger('click');
}
});
干杯提到的将其更改两次
只是一个未经测试的想法,未经测试是因为我不知道如何设置它:-),这是另一个解决方法的结果:mobile safari需要在编程更改后重新呈现select
元素,例如:$('select').val(newval).change().css('display','none').css(“显示”、“内联块”)
$(thisinput).prop('checked',false).prop('checked',true)
$('input[type=radio]').on('click focus',function(){
var el = $(this);
el.blur();
if (/iPhone|iPad|iPod/i.test(navigator.userAgent) && /AppleWebKit/i.test(navigator.userAgent)) {
$('label[for='+el.attr('id')+']').trigger('click');
}
});
$('input[type=radio]').on('click',function(){
var el = $(this);
var label = $('label[for='+el.attr('id')+']');
if (label.length && /iPhone|iPad|iPod/i.test(navigator.userAgent) && /AppleWebKit/i.test(navigator.userAgent)) {
label.trigger('click');
}
});