使用元素ID,而不先声明ID

时间:2014-03-28 04:53:38

标签: jquery getelementbyid

我尝试按ID使用元素而不显式创建对它的引用。

http://jsfiddle.net/D8A8P/

<button id="btn-1">Show Content A</button>
<button id="btn-2">Show Content B</button>
<button id="btn-3">Show Content C</button>

<div id="content-1">Fancy Pants</div>
<div id="content-2">Small Town</div>
<div id="content-3">Cheap Whiskey</div>

如果用户点击了btn,我想知道点击了哪一个。

$( ??? ).on("click", function (e) {
    e.preventDefault();
    console.log(this.id);
});

// If user clicks on btn-1
// console: "btn-1"

// If user clicks on btn-2
// console: "btn-2"

4 个答案:

答案 0 :(得分:1)

您可以使用attribute starts with selector。试试这个:

$("button[id^='btn-']").on("click", function (e) {
    e.preventDefault();
    console.log($(this).attr("id"));
});

<强> DEMO

答案 1 :(得分:1)

尝试使用attribute starts with selector

$("[id^='btn-']").on("click", function (e) {
    e.preventDefault();
    console.log(this.id);
});

答案 2 :(得分:1)

您的示例代码仅显示按钮,因此处理程序可以简单地应用于所有按钮:

$('button').on('click', function (e) {
    console.log(this.id);
});

一个简单的选择器应优先于使用[id^=...的选择器,因为后者将搜索整个文档。

答案 3 :(得分:1)

$("button[id^='btn-']").on("click", function (e) {
    console.log($(this).attr("id"));
});

无需指定preventDefault。按钮没有任何默认的功能操作