2011-06-30 47 views
4

我的目標是清除複選框,單擊它的標籤 下面就檢查的作用是我的代碼..的preventDefault()不工作

$('TABLE TBODY TR TD').each(function() 
    { 
    $(this).find('input').each(function() 
          { 
           $('label for='+$(this)+'').preventDefault(); 
          }); 
    }); 

下面是相關的HTML ..

<table> 
     <tr><input type="checkbox" id="a1"><div><label for="a1">ClickMe</lable></div></tr> 
    </table> 

請別人幫我。

回答

4

preventDefault不是jQuery對象本身的方法。它是傳遞給給定事件處理程序的事件方法。

此外,您的標籤選擇器語法是錯誤的(您忘記了括號並嘗試將jQuery對象與字符串連接),並且您不必要地嵌套了兩個each es。

更好:

$("table tbody tr td input").each(function() { 
    $("label[for='" + this.id + "']").click(function (event) { 
     event.preventDefault(); 
    }); 
}); 

樣品的jsfiddle:http://jsfiddle.net/s9D4n/

甚至可能簡單,但不可否認並不功能等效:

$("label").click(function (event) { 
    event.preventDefault(); 
}); 
+0

嗯抱歉..可悲的是你的代碼不能正常工作:-( – Reddy

+0

「不工作」 !!什麼地方出了錯最好的說明......永遠,你能描述一下不工作,也許產生的jsfiddle它不工作的例子?因爲我在我的帖子鏈接到的JSFiddle表明它的工作原理(我不得不糾正你的無效HTML,雖然...) – Domenic

+0

這裏是jsfiddle鏈接,你可以玩它。 jsfiddle.net/vBKWd/1/ – Reddy

1

你只需從標籤中刪除for屬性。

<label>ClickMe</label> 
相關問題