单击使用Jquery取消选中复选框

时间:2015-02-25 09:51:15

标签: jquery checkbox unselect

我设置了一个基本的购物车,您必须将货物放入绿色的盒子中进行订购。单击项目图标时,它会正确检查关联的复选框。不幸的是,当你再次点击它时,它不会取消选中。

我已经尝试了`$(elem).prop('checked',false); 但它不起作用。你还有其他想法吗?

JSFiddle:http://jsfiddle.net/xbsoLp0u/8/(我已经显示了复选框,让你看到错误)。

代码:

HTML

<div id="selected"></div>

    <div id="nonSelected">

      <label for="blackjack"><img onclick="moveButton(this)" src="http://i.imgur.com/kfMWC91.jpg" alt="" data-checked='img/blackjack.gif' data-unchecked='img/blackjack.jpg'></label>
      <INPUT id="blackjack" type="checkbox" value="Blackjack" name="game[]">    

      <label for="chuckaluck"><img onclick="moveButton(this)" src="http://i.imgur.com/AvPEx4i.jpg" alt="" data-checked='img/chuckaluck.gif' data-unchecked='img/chuckaluck.jpg'></label>
      <INPUT id="chuckaluck" type="checkbox" value="Chuck a Luck" name="game[]">

      <label for="roulette"><img onclick="moveButton(this)" src="http://i.imgur.com/tBEisp3.jpg" alt="" data-checked='img/roulette.gif' data-unchecked='img/roulette.jpg'></label>
      <INPUT id="roulette" type="checkbox" value="Roulette" name="game[]">

      <label for="stud"><img onclick="moveButton(this)" src="http://i.imgur.com/Oigq8QI.jpg" alt="" data-checked='img/stud.gif' data-unchecked='img/stud.jpg'></label>
      <INPUT id="stud" type="checkbox" value="Stud Poker" name="game[]">

      <label for="holdem"><img onclick="moveButton(this)" src="http://i.imgur.com/Oc52z68.jpg" alt="" data-checked='img/holdem.gif' data-unchecked='img/holdem.jpg'></label>
      <INPUT id="holdem" type="checkbox" value="Holdem Poker" name="game[]">

      <label for="boule"><img onclick="moveButton(this)" src="http://i.imgur.com/XFsfu7S.jpg" alt="" data-checked='img/boule.gif' data-unchecked='img/boule.jpg'></label>
      <INPUT id="boule" type="checkbox" value="La Boule" name="game[]">

  </div>

JS

function moveButton(elem){
    if( $(elem).closest("div").attr("id") == "nonSelected" ){
        $(elem).prependTo('#selected');
    }
    else{
        $(elem).prependTo('#nonSelected');
    }
}

CSS

#selected{
    width: 400px;
    height: 200px;
    background-color: #339933;
    border-width: 1px;
    border-style: dotted;
    border-color: black;
    padding: 10px;
    margin: 10px;
}

img{
    cursor: pointer;
}

2 个答案:

答案 0 :(得分:2)

当您转移到selected容器时,label未移动,而for属性决定了checkbox检查哪个<{p}

function moveButton(elem){
    var $elem = $(elem).parent();
    if( $elem.closest("div").attr("id") == "nonSelected" ){
        $elem.prependTo('#selected');
    }
    else{
        $elem.insertBefore('#'+$elem.attr('for'));
    }
}

演示:Fiddle

答案 1 :(得分:1)

单击时选中复选框的原因是因为图像位于label-tag内。它在第二次点击时未被取消选中的原因是因为那时它不在标签标签中。有几种方法可以解决这个问题,例如,您可以在dom中移动标签,而不是移动图像:

function moveButton(elem){
    if( $(elem).closest("div").attr("id") == "nonSelected" ){
        $(elem).parent('label').prependTo('#selected');
    }
    else{
        $(elem).parent('label').prependTo('#nonSelected');
    }
}

http://jsfiddle.net/xbsoLp0u/10/