我有一个带有一堆物品的表格。每个项目旁边都有一个“删除”按钮。当按下其中一个按钮时,我需要知道哪一个按钮,以便我知道要删除哪个项目。
现在的方式,每个按钮都被命名为remove-#
,其中#
是项目的索引。为了获取#
,虽然我必须遍历每个 POST值,检查密钥是否以remove-
开头,如果是,则解析整数。
是否有任何方法比O(n)
更快,其中n
是后期变量的数量?
n
不是那么大,以至于这会成为一项昂贵的操作,但主要是因为我很好奇。
此外,在我得到任何答案之前建议我使用JavaScript并在每个按钮上放置onclick事件以将索引移动到单独的隐藏输入中....我正在尝试执行此操作 without JavaScript。
答案 0 :(得分:1)
一个选项是将每个删除按钮放在一个单独的表单中,隐藏值具有常量名称,值表示要删除的项目。
答案 1 :(得分:1)
如果POST值存储在dict中你可以转过来而不是寻找看起来像删除的东西 - #生成所有remove-#并尝试使用它们来索引dict。这会将搜索限制在O(m),其中m是可以删除的元素数。
答案 2 :(得分:0)
这真的是Javascript的域名。但是添加onclick并不是一个很好的方法。使用HTML5数据属性和不显眼的侦听器。例如,在JQuery / HTML5
中<input type='button' class='remove-button' name='remove' data-remove-attr='5'>
$('.remove-button').live("click", function() {
alert($(this).attr("data-remove-attr")); // Alerts 5.
});
尽管数据是HTML5的东西,但它与旧的IE等向后兼容,因为它们总是允许任意的dom属性。
编辑:注意这是O(1)如果你做了你的行动$('#remove - '+ id).hide();