【发布时间】:2020-11-04 21:52:52
【问题描述】:
问题是 jQuery 返回 undefined 而我不知道为什么...
以下使用最新的 WordPress 和 Woocommerce 运行。使用的 jQuery 是 WP 默认的。
我有以下 html(只是一个便于阅读的片段),该按钮最初是隐藏的,稍后会显示出来。
下面很多并由用户点击上面的“点击我”按钮激活以下js:
(function($) {
$(document).on('click', '#llwoo-update-profile-field-button', function() {
// $('#llwoo-update-profile-field-button').live('click', function() {
let t = $('.ll-li-tabs .ui-state-active'); // returns OK
console.log("Handler for .click() called. t=", t);
let t2 = $('.ll-li-tabs .ui-state-active').attr('aria-controls'); // return undefined!
console.log("Handler for .click() called. t2=", t2);
});
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<ul>
<li class="ll-li-tabs ui-tabs-tab ui-corner-top ui-state-default ui-tab ui-tabs-active ui-state-active" role="tab" tabindex="0" aria-controls="tabs-2" aria-labelledby="ui-id-2" aria-selected="true" aria-expanded="true">
<a href="#tabs-2" role="presentation" tabindex="-1" class="ui-tabs-anchor" id="ui-id-2">
<div id="ll-box-TR" class="ll-box-s ll-box-TR">li with aria-controls</div>
</a>
</li>
</ul>
<div id="llwoo-update-profile-field" class="llwoo-update-profile-field">
<button id="llwoo-update-profile-field-button" type="button">click me</button></div>
t 有一个值,而 t2 未定义且“aria-controls”存在。
知道问题出在哪里吗?我错过了什么?
编辑:我将 live 替换为 on - 同样的问题仍然存在......
谢谢!
【问题讨论】:
-
live已被弃用很长时间,您使用的是什么版本的 jQuery?另请创建minimal reproducible example。最简单的方法是使用Stack Snippets(图标在编辑器工具栏中看起来像<>)。 -
@HereticMonkey 谢谢!我正在使用最新 WordPress 附带的最新 jQuery。我需要
live,因为该按钮起初是隐藏的,后来才显示出来。我有比直播更好的选择吗? -
“我[s]有比直播更好的选择吗? ” - 通过阅读
.live()- api.jquery.com/live 的文档,您可以轻松找到自己的内容。 -
“跟随 html(只是为了便于阅读的一个片段)” - 如果你减少东西太多,那也无济于事。请提供问题的正确minimal reproducible example。
-
这实际上是我评论中最不重要的部分。我要求提供一个可重复的示例,就像您收到的答案中给出的一样。
标签: javascript jquery wordpress woocommerce