Javascript jQuery中是否有.findUsingParent()函数?
Javascript jQuery中是否有.findUsingParent()函数?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,div.tabs是选项卡控件的容器div.tab是一个单独的选项卡,是div.tabs的子选项卡div.tab.active是当前显示的选项卡 .data是一个任意元素。它可以出现在任何div.tab中,也可以只出现在body中,如果它们不是.tab 任务: 如果存在.tabs,请选择.data作为.tab.active的子项 如果没有.tabs,请选择所有.data 我写了以下两个版本: // First version var data; if ($('.tabs
div.tabs
是选项卡控件的容器div.tab
是一个单独的选项卡,是div.tabs
的子选项卡<代码>div.tab.active是当前显示的选项卡
.data
是一个任意元素。它可以出现在任何div.tab
中,也可以只出现在body
中,如果它们不是.tab
任务:
- 如果存在
,请选择.tabs
作为.data
的子项.tab.active
- 如果没有
,请选择所有.tabs
.data
// First version
var data;
if ($('.tabs').length) {
data = $('.tab.active .data');
} else {
data = $('.data');
}
// Section version
var data = $('*');
if ($('.tabs').length) {
data = data.find('.tab.active');
}
data = data.find('.data');
但是我想知道是否有一个函数s.findUsingParent(e)
,它从一组元素s
中选择e
的子元素:
// Expect
var data = $('data');
if ($('.tabs').length) {
data = data.findUsingParent('.tab.active');
}
jQuery中有吗?是否有纯css解决方案?您可以使用
.filter()
函数来筛选父元素为.tab的元素。活动的:
var data = $('data');
if ($('.tabs').length) {
data = data.filter(function(){
return $(this).closest('.tab.active').length !=0;
});
}
筛选器可以将选择器作为其参数。我希望data.filter('.tab.active*')
的效率更高,而且更短。@Fraxdata.filter('.tab.active*')
的工作原理就像一个charmIs指定的问题,只是一个简化的例子,还是实际问题?您的“第一个版本”似乎是比过滤更有效的解决方案,而且我的可读性更高。@Frax这几乎是最初的问题。依我的直觉,第一个版本更有效,但我不确定。我问这个问题的主要原因是我觉得第一个版本不够干。如果我重命名.data
,我将不得不在两个地方进行更改。您可以尝试使用三元运算符?:
,例如数据=$($('.tabs').length?'.tab.active.data','.data'))
,如果重复数据
会让您感到困扰。另一方面,我更关心数据
值的不必要更改(第二版)然后重复这一点——我发现只赋值一次比做两次或多次要清楚得多——但这只是个人偏好。我甚至会考虑在函数-<代码>函数GETDATA()中包装这个函数{{if(…){返回……}{返回……} };var数据= GETDATA();< /C> >,但这似乎有点过于工程化了;