我有一个表行,单击时会触发一个事件。在行内有(未显示)复选框+其样式标签。
我想要的是防止(我想:不是或.not()但是无法弄明白)执行如果单击复选框/标签。
HTML:
<center>
<table>
<tr class='pend'>
<td><input type="checkbox" id="bb"/> <label for="bb">X</label></td>
<td> </td>
<td>some text</td>
</tr>
</table>
</center>
CSS:
center {
margin-top:20px;
}
input[type=checkbox] + label {
width:10px;
height:10px;
background-color:red;
}
input[type=checkbox] {
display:none;
}
table tr {
height:40px;
background-color:gray;
}
table td {
padding:5px;
}
JS:
$('.pend').on('click',function(){
$(this).append('text');
return false;
})
JSFIDDLE:http://jsfiddle.net/ySuGB/2/
答案 0 :(得分:2)
您需要在点击复选框/标签时阻止事件冒泡。
见下文,
// V-- Is the TD containing the checkbox and the label.
$('.pend :checkbox').parent().on('click', function(event) {
event.stopPropagation()
});
答案 1 :(得分:1)
e.stopPropagation()就是您所需要的。
$('.pend input:checkbox').add('.pend label[for=bb]').click(function(e){
e.stopPropagation();
});
答案 2 :(得分:0)
您可以检查事件目标是否为标签(等):
$('.pend').on('click',function(e){
if(e.target.tagName=='LABEL')
return false;
$(this).append('text');
return false;
})
答案 3 :(得分:0)
$('.pend').on('click',function(){
var $this = $(this);
$this.off('click');
$this.find('td:eq(2)').append('text');
})