jQuery动态元素上的多次单击事件不起作用

时间:2013-01-26 22:37:08

标签: jquery asp-classic

我首先要说的是,我花了一整天的时间来查找这个问题的答案,并且无法在任何地方找到它。我希望有人可以帮助我。我对jQuery没有经验,所以请耐心等待我。 :)

我在经典ASP中创建了代码,它生成一个从数据库中提取的动态数据表。我希望能够点击表格中的DIV并让它隐藏数据并显示输入字段。我编写的代码执行此操作,但它只针对出现的第一个结果执行此操作,但对其余部分不起作用。 CLASS名称是唯一的,ID也是如此,但仍然不允许jQuery click事件在第2,第3,第4等行上运行。

这是我的jQuery代码:

<script>
$(document).ready(function(){
 var taskId = $("div[class*='hide']").attr("id");
 var edittaskId = $("div[class*='show']").attr("id");
   $("#" + taskId).click(function(){
   $("#" + taskId).hide();
   $("#" + edittaskId).show();
    });
});    
</script>

这是我的HTML / ASP代码:

    <div id="hide_<%=rs("id")%>" class="hide<%=rs("id")%>" align="right"><%=F_task_due_date%></div>
    <div id="show_<%=rs("id")%>" class="show<%=rs("id")%>" style="display: none;">
    <div>
    <input type="text" name="edit_task_due_date" value="<%=F_task_due_date%>" />
    </div>
    </div>
    </div>

正如我所说的,上面的代码适用于第一个DIV,但不适用于表格下面的其他DIVS。如何让这个jQuery代码允许我点击任何与jQuery代码中的响应相匹配的其他DIV元素,并让它们隐藏/显示?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您尝试从一组元素中获取值,例如属性或文本或html,则只能返回一个值,它将是集合中第一个元素的值。

相反,您需要在事件处理程序中处理每个实例案例的值。在课堂上使用唯一标识符很少是必要或有益的。

如果您要删除idshow课程的hide部分,则可以执行以下操作:

$('.hide, .show').click(function(){
  /* "this" is the element clicked*/
   var taskId=this.id;
   $('#hide_'+taskId, #show_'+taskId).toggle();

});

一种不需要身份证的简单方法是:

$('.hide, .show').click(function(){      
       $(this).toggle().siblings('.hide,.show').toggle();
});