【问题标题】:Jquery get dynamically generated Id of controlJquery获取动态生成的控件ID
【发布时间】:2013-01-21 14:21:25
【问题描述】:

我有一个页面,其中 ID 更改为 ctl00_MainContent_txt_insurance。在这种情况下,我不能将实际 ID 用作$("#txt_insurance")。所以我所做的是使用$("#<%= txt_insurance.ClientID %>"),现在可以正常工作了。

但现在如果我想替换上面的 ID 并显示它,我这样做了:

divToChangeVisible = $("#<%= txt_insurance.ClientID %>");
divToChangeVisible.replace("txt_", "val_").show();

这会给我一个对象并抛出一个错误,说不能被替换。有没有办法让 txt_insurance 作为 Id 而不必替换 ctl00_MainContent_

编辑 :: 如果我这样做 $("#&lt;%= txt_insurance.ClientID %&gt;").attr('id') 这将再次返回动态 ID...

【问题讨论】:

  • $('#") 返回一个对象,它不是一个字符串,所以显然 .replace 不起作用。你的需要不清楚,你想改变 id元素或 wat?? 在这种情况下使用 .attr('id') 获取它并通过 .val() 更改其值
  • ct100_MainContent 被附加到 Id,因为您必须将控件保存在母版页或某种数据网格中。无论如何,它的前缀模式总是固定的,您可以通过获取 attr id 值轻松替换它。你必须在某处硬编码模式
  • @ManishMishra 你是对的,它在母版页中......所以即使在服务器中它也永远不会改变,因为我所有的逻辑都将基于 jquery?

标签: jquery dynamic controls auto-generate


【解决方案1】:

您可以使用 Jquery 选择器,例如“ID 以”结尾:-

$("[id$='txt_insurance']")

上面的语句获取ID以“txt_insurance”结尾的元素。

举个例子:-

var eleid=$("[id$='txt_insurance']").attr('id');
var rep=eleid.replace("txt_", "val_");
alert(rep);
$("[id$='txt_insurance']").attr('id',rep);
//this will replace old ID with new which is 'ctl00_MainContent_val_insurance'

更新:-

    var ele=eleid.split("_");
alert(ele[ele.length-2]+'_'+ele[ele.length-1]);
    var originalid=ele[ele.length-2]+'_'+ele[ele.length-1];
    // originalid will give you original id of element :-

所以你可以像这样继续:-

$('.myform :input').each(function () 
{
    var id = this.id; 
    var orgid=id.split("_");
    var orgid1=orgid[orgid.length-2]+'_'+orgid[orgid.length-1];
    var id2 = $("[id$=" + orgid1 + "]");
 });

【讨论】:

  • 是的,但如果我有 $('.myform :input').each(function () {var id = this.id; var id2 = $("[id$=" + this.id + "]")...现在 id 将为我提供前缀 ctl00..and id2 将为我提供对象是否有办法获得正确的 id
  • 可以在“_”上拆分id,构造原始ID。
  • 好的,但是自动前缀永远不会改变,即使在部署到服务器之后,对吧?
  • 是的......这是 ASP.NET 的命名约定,用于唯一标识每个元素并避免混淆。
  • 如果我的回答对您有所帮助..请不要忘记将其标记为正确。
猜你喜欢
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多