点击时的Jquery检查复选框不会检查它

时间:2014-02-06 05:01:29

标签: jquery

好的,所以我使用SUPERSIMPLE代码检查我的复选框。我的元素上有一个不可见的ahref,旁边有一个复选框。这是html:

<a href="#" class="transparent-checkbox-thingy" id="<?php echo $id;?>" onclick="check(<?php echo $id;?>)"></a>
<input type="checkbox" value="<?php echo $id;?>" name="users[]" class="newconvo-check" id="<?php echo $id;?>">

所以我尝试使用此方法,其中我的check()函数和输入标记具有相同的ID,使用以下JQ:

function check(id)
{
    var newid = '#'+id;
    $(newid).prop('checked', true);
};

或者这个

function check(id)
{

    $('#' + id).prop('checked', true);
};

或者这个

function check(id)
{
    $(id).prop('checked', true);
};

它们都不起作用。他们会在alert(id)alert(newid)上返回有效信息,但他们不会检查该死的复选框。所以我尝试了这个:

$(document).ready(function() {
        $("a.transparent-checkbox-thingy").click(function(event) {
            event.preventDefault();
            var thisid = ('#' + event.target.id);
            $(thisid).prop('checked', true);
        });
    });

没有工作。所以我尝试了这个

$(document).ready(function() {
        $("a.transparent-checkbox-thingy").click(function(event) {
            event.preventDefault();
            $('#1').prop('checked', true);
        });
    });

没有工作。是的,<input type="checkbox">总是id="1"。这就是我正在测试的那个。是的,我有这个

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

5 个答案:

答案 0 :(得分:3)

您在<a><input type="checkbox"中使用了相同的ID,ID是唯一的,您无法将其用作多个地方

 <a href="#" class="transparent-checkbox-thingy" id="<?php echo $id;?>" onclick="check(<?php echo $id;?>)"></a>
 <input type="checkbox" value="<?php echo $id;?>" name="users[]" class="newconvo-check" id="<?php echo $id;?>">

使用此,

<a href="#" class="transparent-checkbox-thingy" id="<?php echo $id;?>" onclick="check(<?php echo $id;?>)">Check</a>
<input type="checkbox" value="<?php echo $id;?>" name="users[]" class="newconvo-check" id="c_<?php echo $id;?>">

<script type="text/javascript">

function check(id)
{
    var newid = '#c_'+id;
    $(newid).prop('checked', true);
};

</script>

答案 1 :(得分:1)

首先,id是唯一的,您不能在两个地方使用相同的ID。

没有ID,您可以将选择器用作$('input[type="checkbox"]'),就像这样

$('input[type="checkbox"]').prop('checked',true);

或者你可以像这样使用class

$('.newconvo-check').prop('checked',true);

JSFiddle

答案 2 :(得分:1)

试试这个例子,它可以帮助你..

<强> Fiddle

<a href="#" class="transparent-checkbox-thingy" id="1" onclick="check(1)">sdfsf</a>
<input type="checkbox" value="1"  class="newconvo-check" id="2" >


$("a.transparent-checkbox-thingy").click(function(event) {
           // alert('working')
            $('#2').attr("checked","checked");
        });

答案 3 :(得分:1)

试试这个

  function checkcheck(id)
  {
        $('input[id^="'+id+'"]').prop('checked', true);
  }

工作演示:http://jsfiddle.net/8L5k4/1/

它的工作正常。但我不知道它是如何工作的 我试过$("input#"+id")它没有工作,所以我尝试了这个,它的工作:)

答案 4 :(得分:0)

id必须以字母(不是数字)开头。如果你的id =“1”,那么它是一个无效的选择器,这就是为什么它没有被检查。

编辑:

来自HTML 4 spec

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

所以...你的问题可能源于在页面上有多个ID,但由于标记无效,你仍然会在某些浏览器中破坏选择器。