我有很长的输入列表,附带了点击功能。每次点击它都会让我回到页面顶部
$(document).on('click', 'input', function () {
var name = $(this).attr("name");
if ($('input[name="' + name + '"]:eq(1)')[0].checked) {
$('label[name="' + name + '"]:eq(1)').addClass('nostate');
$('label[name="' + name + '"]').removeClass('selected');
}
else {
$('label[name="' + name + '"]').removeClass('nostate selected');
if ($('input[name="' + name + '"]:eq(0)')[0].checked) {
$('label[name="' + name + '"]:eq(0)').addClass('selected');
}
else {
$('label[name="' + name + '"]:eq(2)').addClass('selected');
}
}
});
我已经尝试了
function (e) {
e.preventDefault();
}
和
return false;
但他们没有工作我认为这是因为input
在整个页面上都有运行。
注意:
我让它听整个文档的原因是因为我有第二个查询附加了额外的输入,当我点击附加的输入时,我的点击监听器才能正常工作。我认为这是因为点击监听器在页面加载时绑定到input
此外,点击上没有href=""
。
答案 0 :(得分:0)
在尽可能多地删除代码以创建最小/可用/可验证的示例并通过CSS后,我发现它是由单选按钮的位置隐藏引起的。
input[name^="state"][type="radio"] {
position: absolute;
top: -9999px;
left: -9999px;
}
我把它改成了
input[name^="state"][type="radio"] {
display:none;
//position: absolute;
//top: -9999px;
//left: -9999px;
}
这就是诀窍。