2011-08-01 60 views

回答

13

你不應該使用$("input")選擇checkbox,輸入將選擇所有輸入。相反,你可以使用:

$('input:checkbox').change(function(){ 
    if($(this).is(":checked")) { 
     $('div.menuitem').addClass("menuitemshow"); 
    } else { 
     $('div.menuitem').removeClass("menuitemshow"); 
    } 
}); 

基本上,這樣做是執行什麼是function(){}內部時,該複選框被改變。然後,你可以使用jQuery is檢查,如果複選框被選中或不..

+0

它不起作用,什麼也沒有發生 –

+0

好的,你可以發佈你正在使用的HTML嗎?如果沒有看到這個問題,很難嘗試和診斷問題。 – betamax

+0

如果接受的答案不適合您,請嘗試Dinesh Gunarathne提供的解決方案。 – HPWD

2

試試這個:

$('input').change(function(){ 
    if ($(this).is(':checked')) { 
     $('div.menuitem').addClass("menuitemshow"); 
    } 
}); 

你不能有一個屬性更改事件,而選中的複選框本身的變化情況和運行情況,看是否它已被檢查。

+0

我想添加其他塊與removeClass – heximal

+0

OP沒有指定,在問題中,所以最好只是解決他們有問題,他們可以修改它,當他們準備好了。 –

+0

我做了$('div.menuitem')。removeClass(「menuitem」)addClass(「menuitemshow」);並且該類將被刪除,但在瀏覽器刷新時,雖然複選框仍被選中,但類菜單項會再次添加 –

1

我正在做出你想要用複選框切換類的假設。

$('input').change(function(){ 
    var $this = $(this), $div = $('div.menuitem'); 
    if($this.is(':checked')) 
    { 
    $div.addClass('show'); 
    } 
    else 
    { 
    $div.removeClass('show'); 
    } 
}).change(); 

我已經更新這是一個建議解決方案@Rails初學者的問題給出到目前爲止我讀過的評論。

注意最後一行加上change()。這是強制change在頁面加載時立即執行(我假設$('input')等待document.ready 創建)。

+0

這是不對的,他不想將該類添加到複選框,而是添加到'div.menuitem' –

+0

我想在複選框被選中時更改div上的類 –

+0

@Rails初學者,你想要把'div.menuitem'變成'div.menuitemshow'而不是'div.menuitem.menuitemshow'?我建議切換show''類,以使'div.menuitem'變成'div.menuitem.show',它更加模塊化。 – zzzzBov

1
$('input:checkbox').change(function() { 
    if (this.checked) { 
     $('div.menuitem').addClass("menuitemshow"); 
    } 
}); 
3
// if checkbox checked then backgorund color will be gray 
// there should be a input type check box with a parent class label. 

$('input:checkbox').change(function(){ 
    if($(this).is(':checked')) 
     $(this).parent().addClass('selected'); 
    else 
     $(this).parent().removeClass('selected') 
}); 

// input check box should be like this 
<label class="" ><input type="checkbox" name="blabla" /></label> 

這將增加了「選擇」類到標籤標記()

//css 
.selected { 
background:gray 
} 
+0

這應該被標記爲正確的答案。接受的答案將該類添加到每個div.menuitem,而此類只將該類添加到所單擊項目的父級。 – HPWD

0

$('.vfb-checkbox input:checkbox').change(function(){ 
 
    if($(this).is(":checked")) { 
 
     $('.vfb-checkbox label').addClass("checked"); 
 
    } else { 
 
     $('.vfb-checkbox label').removeClass("checked"); 
 
    } 
 
});
.vfb-checkbox{ 
 
    width:180px; 
 
    height:130px; 
 
background:url('http://i304.photobucket.com/albums/nn181/Amam_Dewan/2932337756_1845773ed4_q_d_zpsea5idhnt.jpg'); 
 
} 
 
/* checkboxes */ 
 

 
.vfb-checkbox label { 
 
\t \t cursor: pointer; 
 
\t  display: block; 
 
\t  position: relative; 
 
    width:100%; 
 
    height:100%; 
 

 
\t } 
 

 
.vfb-checkbox label:hover{ 
 
    background:rgba(0,0,0,.7) url(http://i304.photobucket.com/albums/nn181/Amam_Dewan/selected_zpsvfoaira0.png)center center no-repeat; 
 
} 
 

 
\t 
 
.vfb-checkbox input[type=checkbox] { 
 
    \t display: none; 
 
\t } 
 
\t 
 
.checked{ 
 
    \t  background: rgba(0,0,0,.4) url('http://i304.photobucket.com/albums/nn181/Amam_Dewan/selected_zpsvfoaira0.png') center center no-repeat; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="vfb-checkbox"> 
 
    <label id="checkbox" for="check1"> 
 
    <input id="check1" type="checkbox" name="check" value="check1"> 
 
    </label> 
 
</div> 
 
<div class="vfb-checkbox"> 
 
    <label id="checkbox" for="check1"> 
 
    <input id="check1" type="checkbox" name="check" value="check1"> 
 
    </label> 
 
</div>

我在複選框中使用了jquery。當我點擊一個元素時,其他元素會受到影響。我該如何解決這個問題?

相關問題