我的表格有多個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