Javascript - 如何在点击时获取按钮的多个数据属性
Javascript - How to get multiple data attribute of button when on click
我有多个带有 data-rel
属性的按钮,如何在每个按钮被单击时获得该属性?
HTML
<button class="category" data-rel="all">All</button>
<button class="category" data-rel="banana">Banana</button>
<button class="category" data-rel="orange">Orange</button>
<button class="category" data-rel="watermelon">Watermelon</button>
JS
var btn = document.querySelector('.category');
btn.addEventListener('click', function() {
var el = btn.getAttribute('data-rel');
alert(el);
})
我只能获取第一个按钮的属性,不能获取其余按钮的属性
var btn = document.querySelector('.category');
btn.addEventListener('click', function() {
var el = btn.getAttribute('data-rel');
alert(el);
})
.button {
padding: 10px 20px;
}
<button class="category" data-rel="all">All</button>
<button class="category" data-rel="banana">Banana</button>
<button class="category" data-rel="orange">Orange</button>
<button class="category" data-rel="watermelon">Watermelon</button>
我假设您想要一个函数来处理每个按钮。因此我在循环外声明函数,所以它只声明一次,因此节省了内存。无论您在下面使用哪个版本来添加事件侦听器,您都将需要此句柄函数。
// The handle function is declared outside the loop, saving memory.
// The current button is found in this
// Also using dataset to get the data.
function handle(event) {
alert( this.dataset.rel );
}
要获取您需要使用的所有匹配元素 querySelectorAll。它returns一个集合,可以使用forEach-方法轻松遍历集合:
document.querySelectorAll('.category').forEach(
function (btn) {
btn.addEventListener('click', handle );
}
);
这是相同类型的调用,但使用了现代箭头函数。不知道你喜欢什么
document.querySelectorAll('.category').forEach(
btn => btn.addEventListener('click', handle )
);
我有多个带有 data-rel
属性的按钮,如何在每个按钮被单击时获得该属性?
HTML
<button class="category" data-rel="all">All</button>
<button class="category" data-rel="banana">Banana</button>
<button class="category" data-rel="orange">Orange</button>
<button class="category" data-rel="watermelon">Watermelon</button>
JS
var btn = document.querySelector('.category');
btn.addEventListener('click', function() {
var el = btn.getAttribute('data-rel');
alert(el);
})
我只能获取第一个按钮的属性,不能获取其余按钮的属性
var btn = document.querySelector('.category');
btn.addEventListener('click', function() {
var el = btn.getAttribute('data-rel');
alert(el);
})
.button {
padding: 10px 20px;
}
<button class="category" data-rel="all">All</button>
<button class="category" data-rel="banana">Banana</button>
<button class="category" data-rel="orange">Orange</button>
<button class="category" data-rel="watermelon">Watermelon</button>
我假设您想要一个函数来处理每个按钮。因此我在循环外声明函数,所以它只声明一次,因此节省了内存。无论您在下面使用哪个版本来添加事件侦听器,您都将需要此句柄函数。
// The handle function is declared outside the loop, saving memory.
// The current button is found in this
// Also using dataset to get the data.
function handle(event) {
alert( this.dataset.rel );
}
要获取您需要使用的所有匹配元素 querySelectorAll。它returns一个集合,可以使用forEach-方法轻松遍历集合:
document.querySelectorAll('.category').forEach(
function (btn) {
btn.addEventListener('click', handle );
}
);
这是相同类型的调用,但使用了现代箭头函数。不知道你喜欢什么
document.querySelectorAll('.category').forEach(
btn => btn.addEventListener('click', handle )
);