2011-06-30 58 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> 
相关问题