在单击jquery上删除隐藏的字段值

时间:2012-03-04 15:28:43

标签: jquery html

我有这段代码:http://jsfiddle.net/gk5pV/8/

它的功能是将一个td值添加到缺席列表中。再次单击时,它应从缺席列表中删除td值。

,我得到了它的工作
$("#collect").append("<input type='hidden' name='absent[]' value = '" + temp + "'/>" + currentCellText);

值不会被删除。只删除了文本,但隐藏的值(将发布隐藏数据以提交给数据库)不会被删除。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

它不会被删除,因为您将其值设置为“未定义”。 td没有ID开头。添加时,您将id加载到隐藏输入的值中。

如果您将ID正确分配给td,则可以执行以下操作:

$("#collect input[value=" + $(this).attr("id") + "]").remove();

或者您应该将文本加载到值(也就是您的临时变量)中:

var temp = $(this).text();

现在你可以找到这样的输入:

$("#collect input[value=" + $(this).attr("id") + "]").remove();

对于文本部分,最好添加一个通用的包装器:

$("#collect").append("<label><input type='hidden' name='absent[]' value = '" + temp + "'/>" + currentCellText + "</label>");

现在你可以一次性删除所有内容:

$("#collect input[value=" + $(this).attr("id")/*or $(this).text()*/ + "]").parent("label").remove();

答案 1 :(得分:1)

我没有看到代码,但从外观来看,您需要使用delegate

$(document).delegate("td","click",function(){

 //remove or do what eve here
});

或者如果表没有动态添加,那么您可以将事件委托给它,如

$("table").delegate("td","click",function(){
  //event handling code here

});

原因是处理程序不会将自己附加到动态添加的元素

如果你使用jquery 1.7+使用on方法