2015-05-15 47 views
-1

這裏是我的代碼:確定每當用戶選中或取消選中複選框

$(document).ready(function() { 
    $("input[type='checkbox'][name='mycheckboxname']").change(function() { 
     if ($(this).checked == true) { 
      //do something (script 1) 
     } 
     else { 
      //do something else (script 2) 
     } 
    }) 
}); 

我想要做到的是有2個腳本運行depening每當用戶選中或取消選中了「mycheckboxname」複選框。 問題是,對於上面的代碼,我總是隻能運行腳本2,所以它看起來像if $(this).checked始終是false即使用戶檢查checkbox。我是否使用$(this)錯誤的方式?

+0

嘗試$(本).prop( '檢查') – Glorfindel

+1

'this.checked'沒有$簽署 –

+0

@大衛赫德隆德:大聲笑! –

回答

4

checked是元素的DOM屬性,但$(this)返回一個jQuery對象。

你可以只使用DOM屬性:

if (this.checked) 

沒有理由在一個jQuery實例爲包裝this。我的意思是,你可以

if ($(this).prop("checked")) 

...但它不會做任何事情上的this.checked頂部有用。


旁註:

if (someBoolean == true) 

只是寫

if (someBoolean) 

我指的是一種迂迴的方式,爲什麼要停止呢?爲什麼不

if ((someBoolean == true) == true) 

if (((someBoolean == true) == true) == true) 

或... ;-)

+1

A +花費額外的精力教人們jQuery並不總是必要的。 XO。 – naomik

+0

學會了這種用法,如果($(this).prop(「checked」))'並刪除了我的答案 –

+1

這是我正在尋找的東西。我不知道爲什麼我很確定這是一個針對錯誤對象的「this」。謝謝你在附註中的擴展答案 - 我會記住現在就以這種方式使用它。 –

2

使用$(this).prop("checked")得到的<input type="checkbox">

true/false值單擊運行的代碼片段如下以瞭解其工作


$("input[type=checkbox]").change(function(event) { 
 
    if ($(this).prop("checked") === true) { 
 
    alert("ON"); 
 
    } 
 
    else { 
 
    alert("OFF"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox">click it

+0

或者,你知道,'this.checked'。對於$(this).prop(「checked」)'沒有任何理由。 –

+0

@ T.J.Crowder ^。^我意識到,是的,但我認爲一旦你在jQuery土地上,你不妨使用jQuery成語。如果這是一個香草JS答案,我當然會使用'this.checked'。 (希望你做得很好^ ^) – naomik

相關問題