Asp.net 重复标记的jQuery操作

Asp.net 重复标记的jQuery操作,asp.net,jquery,Asp.net,Jquery,好的,这是一个奇怪的请求,但我需要使用jQuery来处理一组具有相同id和名称的标记 我们使用的是Izenda临时报告控件,它有一个查询设计器GUI。它为您提供了一个选择下拉列表,其中包含一个表列表,您可以单击一个按钮并获得另一个按钮,以及另一个和另一个等来构建您的查询 每次单击一个新表时,它都会发布回服务器,并返回表中的新行,该新行具有与上行相同的控件,包括相同的选择标记,具有相同的id和名称属性。我无法理解ASP.NET是如何产生这种情况的 但是我使用jQuery修改了下拉列表的长度,因为它

好的,这是一个奇怪的请求,但我需要使用jQuery来处理一组具有相同id和名称的标记

我们使用的是Izenda临时报告控件,它有一个查询设计器GUI。它为您提供了一个选择下拉列表,其中包含一个表列表,您可以单击一个按钮并获得另一个按钮,以及另一个和另一个等来构建您的查询

每次单击一个新表时,它都会发布回服务器,并返回表中的新行,该新行具有与上行相同的控件,包括相同的选择标记,具有相同的id和名称属性。我无法理解ASP.NET是如何产生这种情况的

但是我使用jQuery修改了下拉列表的长度,因为它们太短了。奇怪的是,尽管它们都有相同的id,但使用jQuery的方式如下:

jQuery("#ctl00_ContentPlaceHolder1_queryBuilder_ctl101_jtc_Table").width(250);
将只更改第一个下拉列表。我需要扩大他们所有,但他们都有相同的ID。还有很多其他选择标签,我不想触摸

有什么想法吗

编辑:
现在我想起来了,我甚至不知道这是怎么回事。页面返回、保存数据源等。一切似乎都正常,但我不知道ASP.NET如何区分一个下拉列表和另一个下拉列表。但它确实有效。

您需要通过其他选择器访问它们。由于javascript规范要求唯一ID,jQuery将只对第一个匹配的唯一ID进行操作。如果DOM上有一个更高级别的类,并且您可以通过与DOM相关的路径一致地访问元素,那么您可能希望通过这种方式解决问题。 例如,让每个表在whateverClass类的div中呈现,并使用$'.whateverClas table'.width250;
我必须做一些测试,但我能想到的唯一其他解决方案是做一个循环$ELEM.not.classed.addclassed;要为每个重复的ID提供一个可选的类..?

您需要通过其他选择器访问它们。由于javascript规范要求唯一ID,jQuery将只对第一个匹配的唯一ID进行操作。如果DOM上有一个更高级别的类,并且您可以通过与DOM相关的路径一致地访问元素,那么您可能希望通过这种方式解决问题。 例如,让每个表在whateverClass类的div中呈现,并使用$'.whateverClas table'.width250; 我必须做一些测试,但我能想到的唯一其他解决方案是做一个循环$ELEM.not.classed.addclassed;要为每个重复ID指定一个可选的类?

$yourid将只与第一个ID匹配,因为您的所有ID都应该是唯一的

如果您不能拥有唯一的ID,那么可以使用 $input[id='yourid'];。这将返回所有匹配的元素

查看它是否工作:

$yourid将只与第一个匹配,因为,当然,您的所有ID都应该是唯一的

如果您不能拥有唯一的ID,那么可以使用 $input[id='yourid'];。这将返回所有匹配的元素


查看它的工作情况:

jQuery只调整一个选项并不奇怪

DOM ID在整个页面上应该是唯一的,即使浏览器不会对此抱怨太多,在javascript中按ID选择元素只会在多个元素具有相同ID的情况下给出随机结果

您应该尝试通过表的元素名称和在页面中的位置来选择表

for instance let's imagine your tables are inside the 3rd div in the page :
jQuery('div:eq(2)>table').width(250);
您应该查看上可用的所有结构选择器,并在不使用ID的情况下构建结构选择器

我希望这对你有帮助


Jerome Wagner

jQuery只调整您的一个选择并不奇怪

DOM ID在整个页面上应该是唯一的,即使浏览器不会对此抱怨太多,在javascript中按ID选择元素只会在多个元素具有相同ID的情况下给出随机结果

您应该尝试通过表的元素名称和在页面中的位置来选择表

for instance let's imagine your tables are inside the 3rd div in the page :
jQuery('div:eq(2)>table').width(250);
您应该查看上可用的所有结构选择器,并在不使用ID的情况下构建结构选择器

我希望这对你有帮助


Jerome Wagner

HTML id应该始终是唯一的。您始终可以使用一个类来标记多个相关元素,但重复的id会导致脚本编写问题。当然,当你不能控制代码时。。。那是另一个故事。也许您可以使用jQuery为添加的元素分配新的、唯一的id?我同意您的看法。但是在本例中,我们有一个明显有缺陷的第三方控件,我们无法控制它。你能为这个发布一些标记吗?也许您可以选择父项,除非它们的id也是非唯一的…,然后遍历到您需要的子项。HTML id应该始终是唯一的。您始终可以使用一个类来标记多个相关元素,但重复的id会导致脚本编写问题。当然,当你不能控制代码时。。。那是另一个故事。也许可以使用jQuery将新的、唯一的id分配给add
我同意你的看法。但是在本例中,我们有一个明显有缺陷的第三方控件,我们无法控制它。你能为这个发布一些标记吗?也许你可以选择父母,除非他们的ID也是非唯一的…,然后遍历到你需要的孩子。太棒了,谢谢!我假设attribute equals东西不打算与id一起使用,因为我们应该有唯一的id,但它似乎与任何其他属性一样工作。很好!太棒了,谢谢!我假设attribute equals东西不打算与id一起使用,因为我们应该有唯一的id,但它似乎与任何其他属性一样工作。很好!