2

如何为具有相同 ID 的多个自动生成的按钮提供相同的链接?

我试过了,但它只给第一个按钮链接,其余按钮保持空

$('#Button').click(function() {
    window.location='aaa.html';
});
4

4 回答 4

5

在 HTML 中只能有一个具有给定 ID 的元素,要将相同的 jQuery 代码分配给多个元素,您应该改用“类”属性。

见:http ://www.w3.org/TR/html401/struct/global.html#h-7.5.2

JS:

$('.button').click(function() {
                    window.location='aaa.html';
                    });

HTML:

<div class="button">DIV 1</div>
<div class="button">DIV 2</div>
<div class="button">DIV 3</div>
于 2013-04-22T14:18:11.583 回答
4

我试过了,但它只给第一个按钮链接,其余按钮保持空

标识符在整个页面中应该是唯一的,才能成为有效的 HTML。

当通过 Id 查询时,jQuery 只会返回第一个匹配的。

尝试使用类代替,因为类可以应用于元素组。

然后更新选择器以使用类指示符.,类似于:

$('.YourClassName').click(function() {
    window.location='aaa.html';
});

有关 jQuery id 选择器的更多详细信息,请查看ID 选择器(“#id”)文档。

正如那里所说:

每个 id 值只能在文档中使用一次。如果为多个元素分配了相同的 ID,则使用该 ID 的查询将仅选择 DOM 中第一个匹配的元素。但是,不应依赖此行为;具有多个使用相同 ID 的元素的文档无效。

于 2013-04-22T14:18:25.250 回答
1

你不应该给多个元素相同id,但如果你必须,你可以使用:

$('[id="Button"]').click(function() {
    window.location='aaa.html';
});

我建议让ids 都以“Button”开头,并在生成它们时在末尾添加一个整数,这样你就有了结构:

<div id="Button1"></div>
<div id="Button2"></div>
<div id="Button3"></div>

所以你可以使用:

$('[id^="Button"]').click(function() {
    window.location='aaa.html';
});

另一种选择是设置一个特定的class,并具有以下结构:

<div class="button-class"</div>
<div class="button-class"></div>
<div class="button-class"></div>

并使用类似的东西:

$('.button-class').click(function() {
    window.location='aaa.html';
});

您可能想要研究的是事件委托:http ://api.jquery.com/on/#direct-and-delegated-events

参考:

于 2013-04-22T14:21:13.317 回答
0

拥有多个相同的 ID 是违反 HTML 规范的。您可以使用 css 类或其他选择器。

于 2013-04-22T14:20:38.707 回答