使用 jQuery 在列表中查找 id
Using jQuery to find an id within a list
我有一个属性列表,其中第一个包含活动 class。
<ul class="parcel-tabs panel-header">
<li class="tab-list">
<a id="fee-summary-tab" href="#feeSummary" class="active">
<span class="tab-label">Fee Summary</span>
</a>
</li>
<li class="tab-list">
<a id="relationships-tab" href="#relationships">
<span class="tab-label">Parcel Relationships</span>
</a>
</li>
<li class="tab-list">
<a id="accounts-tab" href="#accounts">
<span class="tab-label">Accounts</span>
</a>
</li>
</ul>
我正在尝试使用 jQuery .find() 来 select 使用活动 class 的 'fee-summary-tab' id 但是我一直导致未定义。
.on('click', '#relationships-tab', function (event) {
var activeTab = $('ul.parcel-tabs li a').find('.active');
alert(activeTab.data('id'));
});
你有几个问题。首先,.find
查找元素的后代,因此由于您已经使用选择器找到了 a
,即使它确实具有 active
,它也不会找到该元素class。将选择器更改为 ul.parcel-tabs li a.active
意味着您不需要执行 find
。其次,你从 .attr
得到 id
,而不是 .data
。
$(document).on('click', '#relationships-tab', function(event) {
var activeTab = $('ul.parcel-tabs li a.active');
alert(activeTab.attr('id'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="parcel-tabs panel-header">
<li class="tab-list">
<a id="fee-summary-tab" href="#feeSummary" class="active">
<span class="tab-label">Fee Summary</span>
</a>
</li>
<li class="tab-list">
<a id="relationships-tab" href="#relationships">
<span class="tab-label">Parcel Relationships</span>
</a>
</li>
<li class="tab-list">
<a id="accounts-tab" href="#accounts">
<span class="tab-label">Accounts</span>
</a>
</li>
</ul>
.find
,正如 docs 所说,在所选元素的 descendants 中搜索。而在您的 HTML 中,您的 active
class 附加到 a
元素本身。
所以你应该改变
var activeTab = $('ul.parcel-tabs li a').find('.active');
要么
var activeTab = $('ul.parcel-tabs li a.active');
或者
var activeTab = $('ul.parcel-tabs li').find('.active');
根据您的喜好,或者与您的其余代码一起使用效果更好。
var activeTab = $('ul.parcel-tabs li').find('a.active')[0];
console.log(activeTab.id);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="parcel-tabs panel-header">
<li class="tab-list">
<a id="fee-summary-tab" href="#feeSummary" class="active">
<span class="tab-label">Fee Summary</span>
</a>
</li>
<li class="tab-list">
<a id="relationships-tab" href="#relationships">
<span class="tab-label">Parcel Relationships</span>
</a>
</li>
<li class="tab-list">
<a id="accounts-tab" href="#accounts">
<span class="tab-label">Accounts</span>
</a>
</li>
</ul>
我有一个属性列表,其中第一个包含活动 class。
<ul class="parcel-tabs panel-header">
<li class="tab-list">
<a id="fee-summary-tab" href="#feeSummary" class="active">
<span class="tab-label">Fee Summary</span>
</a>
</li>
<li class="tab-list">
<a id="relationships-tab" href="#relationships">
<span class="tab-label">Parcel Relationships</span>
</a>
</li>
<li class="tab-list">
<a id="accounts-tab" href="#accounts">
<span class="tab-label">Accounts</span>
</a>
</li>
</ul>
我正在尝试使用 jQuery .find() 来 select 使用活动 class 的 'fee-summary-tab' id 但是我一直导致未定义。
.on('click', '#relationships-tab', function (event) {
var activeTab = $('ul.parcel-tabs li a').find('.active');
alert(activeTab.data('id'));
});
你有几个问题。首先,.find
查找元素的后代,因此由于您已经使用选择器找到了 a
,即使它确实具有 active
,它也不会找到该元素class。将选择器更改为 ul.parcel-tabs li a.active
意味着您不需要执行 find
。其次,你从 .attr
得到 id
,而不是 .data
。
$(document).on('click', '#relationships-tab', function(event) {
var activeTab = $('ul.parcel-tabs li a.active');
alert(activeTab.attr('id'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="parcel-tabs panel-header">
<li class="tab-list">
<a id="fee-summary-tab" href="#feeSummary" class="active">
<span class="tab-label">Fee Summary</span>
</a>
</li>
<li class="tab-list">
<a id="relationships-tab" href="#relationships">
<span class="tab-label">Parcel Relationships</span>
</a>
</li>
<li class="tab-list">
<a id="accounts-tab" href="#accounts">
<span class="tab-label">Accounts</span>
</a>
</li>
</ul>
.find
,正如 docs 所说,在所选元素的 descendants 中搜索。而在您的 HTML 中,您的 active
class 附加到 a
元素本身。
所以你应该改变
var activeTab = $('ul.parcel-tabs li a').find('.active');
要么
var activeTab = $('ul.parcel-tabs li a.active');
或者
var activeTab = $('ul.parcel-tabs li').find('.active');
根据您的喜好,或者与您的其余代码一起使用效果更好。
var activeTab = $('ul.parcel-tabs li').find('a.active')[0];
console.log(activeTab.id);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="parcel-tabs panel-header">
<li class="tab-list">
<a id="fee-summary-tab" href="#feeSummary" class="active">
<span class="tab-label">Fee Summary</span>
</a>
</li>
<li class="tab-list">
<a id="relationships-tab" href="#relationships">
<span class="tab-label">Parcel Relationships</span>
</a>
</li>
<li class="tab-list">
<a id="accounts-tab" href="#accounts">
<span class="tab-label">Accounts</span>
</a>
</li>
</ul>