2014-02-24 31 views
0

我有這樣的代碼:與複選框的變化特性奇怪的行爲

<table border="1" style="margin:0 auto;"> 
    <tr> 
     <td class="pointer" style="padding: 2px;"><input style="margin-left: 2px;" type="checkbox" name="nuovoCheck" id="newCheckId" value="N" /></td> 
     <td id="textCheckNuovo" class="pointer" onClick="return selectNew();"><b>New</b></td> 
    </tr> 
</table> 

與相關的腳本:

function selectNew() { 
    if ($('#newCheckId').prop('checked') == false) { 
     $('#newCheckId').attr('checked', true) 
    } 
    else { 
     $('#newCheckId').attr('checked', false) 
    } 
} 

我不知道爲什麼這些工作只是1次:

  • 我點擊並勾選其複選框
  • 我點擊另一個時間,ch eckbox未經檢查。
  • 但如果點擊第三次沒有任何反應。

我不明白。

我想這一點:如果單擊了那麼該複選框已被檢查

+0

爲什麼不'$( '#newCheckId')丙( '檢查',真)''中和if' 'else'' onClick'應該是'onclick'加標記 –

+0

它適用於Firefox和Chrome瀏覽器。 –

+1

可能是由較舊的jQuery版本引起的。 – alalp

回答

1

複選框附近的文本嘗試

function selectNew() { 
      if ($('#newCheckId').prop('checked') == false) { 
       $('#newCheckId').prop('checked', true) 
      } 
      else { 
       $('#newCheckId').prop('checked', false) 
      } 
     } 
+0

謝謝你。完美的作品。 – Alist3r

0

試試這個:

if ($('#newCheckId').prop('checked') == false) { 
     $('#newCheckId').prop('checked', true) 
     $('#newCheckId').attr('checked', true) 
    } 
    else { 
     $('#newCheckId').removeAttr('checked') 
    } 
1

如果你能處理去與HTML5的兼容性,「label」標籤處理這一點,將語義上的文本聯繫起來(IE被理解爲實際上被鏈接爲複選框的標籤),並且沒有工作JavaScript的(適用於HTML5兼容的瀏覽器)

例如

<table border="1" style="margin:0 auto;"> 
    <tr> 
     <td class="pointer" style="padding: 2px;"><input style="margin-left: 2px;" type="checkbox" name="nuovoCheck" id="newCheckId" value="N" /></td> 
     <td id="textCheckNuovo" class="pointer"><label for="newCheckId">New</label></td> 
    </tr> 
</table> 

見這個JS小提琴(無javascript),用於動作一個例子:http://jsfiddle.net/RKuhT/