我一直在使用我在这里发现的jQuery脚本来突出显示表单中的行,或者在单击它们时忽略行中的行。该脚本是:委托的jQuery事件不适用于动态添加的元素
$(".clickable-row").click(function(){
if($(this).hasClass('row-highlight'))
$(this).removeClass('row-highlight');
else
$(this).addClass('row-highlight').siblings().removeClass('row-highlight');
}
所有在我的表行有一个类可点击行。
这对我来说一直很好,直到我引入了一个表格,当用户单击一个按钮时,它会动态添加行。在该表中,动态添加的行不会突出显示。
我不以任何方式,但一些研究,我发现,通过使用事件代表团,动态添加的行应该是点击后jQuery的专家,所以我改变了我的脚本是:
$(".clickable-row").on("click", "td", function() {
if ($(this).parent().hasClass('row-highlight')) {
$(this).parent().removeClass('row-highlight');
} else {
$(this).parent().siblings().removeClass('row-highlight');
$(this).parent().addClass('row-highlight');
}
});
这适用于我的静态表,但仍然无法在动态添加的行上工作。
我已经检查了HTML的动态添加行,他们是这样的:
<tr class="clickable-row">
<td>some text here</td>
<td class="hidden"><input type="text" name ="ID2" value="2"></td>
HTML结构是完全一样在同一个表中现有的行。这些行包含在标签中。
我哪里错了?
编辑:出于某种原因,代码块显示不正确。在html示例的末尾有一个“/ tr”标签,但它并未显示在问题中。
.clickable行是动态的元素,也因此,试图事件附加到表(静态父)。 – sinisake