如何使用 jQuery 检索单击元素的属性?
How can I retrieve the attribute of a clicked element with jQuery?
我正在使用 wordpress 和 woocommerce,我想在选择产品变体时向 运行 添加一些脚本,其中 jQuery。
我在 html 中有一组 "buttons" 是这样的:
<div class="adsw-attribute-option">
<span class="meta-item-text sku-set" data-value="s">S</span>
<span class="meta-item-text sku-set" data-value="m">M</span>
<span class="meta-item-text sku-set" data-value="l">L</span>
<span class="meta-item-text sku-set" data-value="xl">XL</span>
<span class="meta-item-text sku-set" data-value="xxl">XXL</span>
<span class="meta-item-text sku-set" data-value="xxxl">XXXL</span>
</div>
我使用以下内容添加点击侦听器:
$(".adsw-attribute-option > .meta-item-text").on("click", () => {})
在处理程序中,我需要读取被单击的 "button" 的 data-value
属性。首先我尝试了:$(this).attr("data-value")
。这返回了 undefined
。我尝试使用 .data
而不是 attr 函数,结果相同。
$(this)
的使用似乎有问题,我无法读取它的任何属性,例如 html 或 class。
我以为$(this)
应该指的是事件被调用的对象,但好像不是这样。
我在这里错过了什么?在这种情况下,还有其他方法可以检索 "data-value" 的值吗?
您应该使用 .attr 函数:
$(".adsw-attribute-option > .meta-item-text").on("click", function () {
$(this).attr('data-value');
});
重要的是不要使用箭头函数,因为使用箭头函数时无法调用它。
如果您正在为处理程序使用箭头函数,请尝试改用 function 关键字。箭头函数将具有与其父上下文相同的 this
值,因此它不会让您访问您尝试读取的属性。
$(".adsw-attribute-option > .meta-item-text").on("click", function(e) {
console.log($(this).attr('data-value'));
});
$(".adsw-attribute-option > .meta-item-text").on("click", e => {
console.log($(e.target).data('value'));
console.log(e.target.dataset.value);
});
如果你使用传入的事件,你可以使用箭头函数。
我正在使用 wordpress 和 woocommerce,我想在选择产品变体时向 运行 添加一些脚本,其中 jQuery。
我在 html 中有一组 "buttons" 是这样的:
<div class="adsw-attribute-option">
<span class="meta-item-text sku-set" data-value="s">S</span>
<span class="meta-item-text sku-set" data-value="m">M</span>
<span class="meta-item-text sku-set" data-value="l">L</span>
<span class="meta-item-text sku-set" data-value="xl">XL</span>
<span class="meta-item-text sku-set" data-value="xxl">XXL</span>
<span class="meta-item-text sku-set" data-value="xxxl">XXXL</span>
</div>
我使用以下内容添加点击侦听器:
$(".adsw-attribute-option > .meta-item-text").on("click", () => {})
在处理程序中,我需要读取被单击的 "button" 的 data-value
属性。首先我尝试了:$(this).attr("data-value")
。这返回了 undefined
。我尝试使用 .data
而不是 attr 函数,结果相同。
$(this)
的使用似乎有问题,我无法读取它的任何属性,例如 html 或 class。
我以为$(this)
应该指的是事件被调用的对象,但好像不是这样。
我在这里错过了什么?在这种情况下,还有其他方法可以检索 "data-value" 的值吗?
您应该使用 .attr 函数:
$(".adsw-attribute-option > .meta-item-text").on("click", function () {
$(this).attr('data-value');
});
重要的是不要使用箭头函数,因为使用箭头函数时无法调用它。
如果您正在为处理程序使用箭头函数,请尝试改用 function 关键字。箭头函数将具有与其父上下文相同的 this
值,因此它不会让您访问您尝试读取的属性。
$(".adsw-attribute-option > .meta-item-text").on("click", function(e) {
console.log($(this).attr('data-value'));
});
$(".adsw-attribute-option > .meta-item-text").on("click", e => {
console.log($(e.target).data('value'));
console.log(e.target.dataset.value);
});
如果你使用传入的事件,你可以使用箭头函数。