Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为什么不勾选和取消勾选复选框?_Jquery - Fatal编程技术网

Jquery 为什么不勾选和取消勾选复选框?

Jquery 为什么不勾选和取消勾选复选框?,jquery,Jquery,我有以下查询代码: function selectTag(id) { var input = 'input#tag_' + id; var span = '#span_' + id; if ($(input).is(':checked') && $(span).hasClass('selected')) { $(span).removeClass('selected'); $(input).prop('checked',

我有以下查询代码:

function selectTag(id) {
    var input = 'input#tag_' + id;
    var span = '#span_' + id;

    if ($(input).is(':checked') && $(span).hasClass('selected')) {
        $(span).removeClass('selected');
        $(input).prop('checked', false);
    }
    else {
        $(span).addClass('selected');
        $(input).prop('checked', true);
    }
}
条件的最后一部分没有执行。未选中或取消选中复选框

这是html

<?php foreach ($this->tags as $uri=>$tag){?>
     <input type="checkbox" name="tags[]" style="display: none;" value="<?php echo $uri;?>" id="tag_<?php echo $uri;?>" <?php echo isset($args['tags']) && in_array($uri, $args['tags'])?'checked="checked"':'';?> />
     <span onclick="selectTag(<?php echo $uri;?>)" id="span_<?php echo $uri;?>" for="create_<?php echo $uri;?>" class="tag <?php echo isset($args['tags']) && in_array($uri, $args['tags'])?'selected':'';?>"><?php echo str_replace(' ', '&nbsp;', $tag);?></span>
<?php }?>


您可以这样做:

  • 使用jQuery时,不需要使用
    onClick
    属性。你可以通过事件来代替。因此,不需要将元素id传递给函数
    $(此)
    保存元素对象,您可以通过
    attr('id')
    访问id属性
jQuery

$('span').click(function(){
    var id =  $(this).attr('id');
    var input = $('input#tag_' + id);
    var span = $(this);
    if (input.is(':checked') && span.hasClass('selected')) {
        span.removeClass('selected');
        input.prop('checked', false);
    }
    else {
       span.addClass('selected');
        input.prop('checked', true);
    } 
});
$('span').click(function(){
    var span = $(this);
    var input = $(this).prev();
    if (input.is(':checked') && span.hasClass('selected')) {
        span.removeClass('selected');
        input.prop('checked', false);
    } else {
       span.addClass('selected');
        input.prop('checked', true);
    } 
});
html

<input type="checkbox" name="tags[]"  value="" id="tag_1" />
<span id="1" for="" class="tag selected">siamak 1</span>

<input type="checkbox" name="tags[]" value="" id="tag_2" />
<span id="2" for="" class="tag selected">siamak 12</span>


<input type="checkbox" name="tags[]" value="" id="tag_3" />
<span id="3" for="" class="tag selected">siamak 3</span>
<input type="checkbox" name="tags[]"  value=""  />
<span  for="" class="tag selected">siamak 1</span>

<input type="checkbox" name="tags[]" value="" />
<span  for="" class="tag selected">siamak 2</span>


<input type="checkbox" name="tags[]" value="" />
<span  for="" class="tag selected">siamak 3</span>
html

<input type="checkbox" name="tags[]"  value="" id="tag_1" />
<span id="1" for="" class="tag selected">siamak 1</span>

<input type="checkbox" name="tags[]" value="" id="tag_2" />
<span id="2" for="" class="tag selected">siamak 12</span>


<input type="checkbox" name="tags[]" value="" id="tag_3" />
<span id="3" for="" class="tag selected">siamak 3</span>
<input type="checkbox" name="tags[]"  value=""  />
<span  for="" class="tag selected">siamak 1</span>

<input type="checkbox" name="tags[]" value="" />
<span  for="" class="tag selected">siamak 2</span>


<input type="checkbox" name="tags[]" value="" />
<span  for="" class="tag selected">siamak 3</span>

siamak 1
siamak 2
siamak 3

请共享您的HTML。您使用的是正确版本的jQuery(1.6+)@AndrewArnold我使用的是jQuery 1.10请共享浏览器呈现的HTML。谢谢。你试过在JS中设置断点吗?这个函数真的被调用过吗?