1

我首先想说的是,我花了一整天时间寻找这个问题的答案,但在任何地方都找不到。我希望有人可以在这里帮助我。我根本没有使用 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 元素,并让它们隐藏/显示?

先感谢您。

4

1 回答 1

0

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

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

如果您要删除和类的id部分,您可以简单地执行类似的操作showhide

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

});

不需要 ID 的更简单的方法是:

$('.hide, .show').click(function(){      
       $(this).toggle().siblings('.hide,.show').toggle();
});
于 2013-01-26T22:55:59.200 回答