2014-02-06 82 views
2

好吧,所以我使用SUPERSIMPLE代碼來檢查我的複選框。我有一個對我的元素和旁邊的複選框的無形ahref。這裏的HTML:Jquery檢查點擊複選框不檢查它

<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"。這就是我正在測試的那個。是的,我有<a><input type="checkbox"這個

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

你的腳本位於哪裏?你張貼的jQuery的上方還是下方? –

+0

在src下面。得到它修復,但謝謝! –

回答

3

你使用了相同的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> 
+0

哦,哇,這是我的braindead ..讓我解決這個問題,併發布工作版本>。<謝謝 –

+0

謝謝,但因爲我通過'onclick(id)傳遞'我實際上不需要''id '

+0

是的,在這種情況下,它會工作。 –

0

ID必須以字母(不是數字)開頭。如果你的id =「1」,那麼它是一個無效的選擇器,這就是爲什麼它沒有被檢查。

編輯:

HTML 4 spec

ID和名稱標記必須以字母開頭([A-ZA-Z]),並且可以隨後通過任意數量的字母,數字( [0-9]),連字符(「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。」)。

因此......您的問題可能源於頁面上有多個ID,但由於標記無效,您仍然會在某些瀏覽器中破壞選擇器。

+0

它實際上只與一個數字一起工作,但正如Krish所說,我有兩個具有相同ID的元素=) –

1

第一件事,id是獨一無二的,你不能在兩個地方使用相同的ID。

沒有ID,而是可以使用選擇作爲$('input[type="checkbox"]')這樣

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

,或者您可以使用class這樣

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

JSFiddle

+1

應使用.prop,而不是.attr – relic

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"); 
     }); 
1

試試這個

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

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

其工作fine..But我不知道如何及其工作 我試過$("input#"+id")它不能正常工作,所以我試過了,它的工作:)