2011-06-17 52 views
0

我有一個列表。在那裏我有一些複選框。我試圖以兩種不同的方式檢查複選框。一種是默認方式,另一種是當我點擊「李」時。代碼的鏈接是here複選框失去其默認功能

當我點擊李,複選框檢查正確,但是當我點擊複選框本身,它不。可能是什麼問題?

回答

1

你可以通過檢查點擊事件的目標來解決這個問題。如果它不是li元素,請不要運行您的代碼。

$("#divclass li").click(function(e){ 
    if(e.target.nodeName == "LI") { 
     //Your code 
    } 
}); 

查看此updated fiddle爲例。

+0

這是有效的。爲什麼我的代碼無法正常工作。我已經在LI上使用click事件了嗎?我的意思是$(「。divclass li」)。點擊(...? – user781178

+0

,這是因爲複選框被切換兩次,並保持它的狀態......你可以在'patrick'中看到答案 – Vivek

+0

你的代碼不工作,因爲當你點擊一個複選框(這是一個'li'元素的子元素)時,複選框將按照正常複選框的行爲進行檢查。但是,因爲複選框是在'li'裏面,所以'''''點擊事件也會運行,並且複選框再次被取消選中。 –

1

您可以使用標籤而不是js。 參見here

<div class="divclass" id="divclass"> 
    <ul> 
     <li><label><input type="checkbox" name="checkclass" class="checkclass" value="1" />Morbi in sem quis dui placerat ornare. Pellentesque odio nisi, euismod in, pharetra a, ultricies in, diam. Sed arcu. Cras consequat.</label></li> 
     <li><label><input type="checkbox" name="checkclass" class="checkclass" value="2" />Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus.</label></li> 
     <li><label><input type="checkbox" name="checkclass" class="checkclass" value="3" />Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi.</label></li> 
     <li><label><input type="checkbox" name="checkclass" class="checkclass" value="4" />Pellentesque fermentum dolor. Aliquam quam lectus, facilisis auctor, ultrices ut, elementum vulputate, nunc.</label></li> 
    </ul> 
</div> 
+0

@clyish,你的回答也有幫助 – user781178