我的表格有多个input type="radio"
,旁边有文字。我想隐藏这些inputs
并只显示文字,这些文字会对点击进行反应并更改inputs
的值和背景颜色。jquery,点击事件有时并不起作用
HTML:
<div class="right">
<div>
<span onclick='$("input.rg1").attr("checked", false).change();'>Choose</span>
<div>A<input type="radio" name="radio[1]" class="rg1" value="1"></div>
<div>B<input type="radio" name="radio[1]" class="rg1" value="2"></div>
<div>C<input type="radio" name="radio[1]" class="rg1" value="3"></div>
</div>
</div>
的Javascript:
// Bind click event on divs and send it to radio input
$("div.right div div").click(function(e){
if(!$(e.target).is("input"))
{
alert("Clicked Div/Text!")
$(e.target).children("input").click();
}
});
// Hide all radio inputs, make only texts visible
$("div.right input[type='radio']").hide();
// Bind change event on radio inputs, change
// background-color of text that is next to clicked radio input
$("div.right input[type='radio']").change(function(e){
alert("change Event "+$(e.target).is(":checked"));
if($(e.target).is(":checked"))
{
$(e.target).parent().css("background-color", "#A00");
}
else
{
$(e.target).parent().css("background-color", "#00A");
}
});
的问题是,当我的文字点击旁边的无线电(如A),2个警报弹出和背景颜色改变,但如果我再次点击该文本,我只有第一个警报,但不是第二个。为什么? 第一次提醒后,有$(e.target).children("input").click();
应该运行该更改事件,但它不,虽然没有任何条件。
任何人都可以给我一个关于最新错误的建议吗?谢谢
你为什么会得到第二个提醒?这不仅仅是因为输入改变了吗?在第二种情况下,它不会改变。 – Anthony 2012-03-05 08:32:39
另外,您是否熟悉标签元素?它会为您节省很多步骤,因为它们在默认情况下选择目标时没有额外的js。 – Anthony 2012-03-05 08:34:41
我在考虑'标签',但我认为属性“为”链接元素的“名称”而不是“ID”...没关系,它与'div'一起工作 – Buksy 2012-03-05 09:53:48