Jquery 匹配一个元素';s类到另一个元素';s ID,或另一个元素的*部分';身份证
这样一个简单的概念,但我正在努力表达它。。。为我的长篇大论提前道歉 我有一个带有类的容器div,例如;我想用这个类做两件事:Jquery 匹配一个元素';s类到另一个元素';s ID,或另一个元素的*部分';身份证,jquery,loops,if-statement,Jquery,Loops,If Statement,这样一个简单的概念,但我正在努力表达它。。。为我的长篇大论提前道歉 我有一个带有类的容器div,例如;我想用这个类做两件事: 向nav元素添加一个类(例如“active”),该元素的ID与div容器的类匹配(例如“nav primary li”apples) 如果该元素的部分ID与#容器的类(例如,div#secondary apples)匹配,则将同一类添加到另一个元素中 我假设有一个.each()循环来检查主导航列表项的ID,并检查辅助导航的div ID。。。虽然后者需要修剪前缀。。。或者我
<script type="text/javascript">
$(document).ready(function() {
$('#nav-primary li').each(function(){
var containerClass = $('#container').attr('class');
var secondaryID = $('#nav-primary li').attr('id');
// something like
if ('#nav-primary li id' == (containerClass)
{
}
// or should I first store a variable of the LI's ID and do something like this:
if ( secondaryID == containerClass )
{
}
// and for the trickier part, how do I filter/trim the secondary nav div IDs, something like this:
var secondaryNavID = $('#aux-left div[id ... something here to strip the 'secondary-' bit ... ]');
}); // end each
}); // end doc.ready.func
</script>
$(文档).ready(函数(){
$('#nav primary li')。每个(函数(){
var containerClass=$('#container').attr('class');
var secondaryID=$('#nav primary li').attr('id');
//差不多
如果(“#导航主li id”==(集装箱类)
{
}
//或者我应该先存储LI的ID变量,然后执行以下操作:
if(secondaryID==容器类)
{
}
//至于更棘手的部分,我该如何过滤/修剪辅助导航分区ID,如下所示:
var secondaryNavID=$(“#aux left div[id…此处的内容用于剥离“secondary-”位…]);
})//结束每一个
});//结束doc.ready.func
标记为,例如:
<div id="container" class="apples"> ...
<ul id="nav-primary">
<li id="apples"> ...
<li id="oranges"> ...
<li id="bananas"> ...
</ul>
<div id="aux-left">
<div id="secondary-apples"> ...
<div id="secondary-oranges"> ...
<div id="secondary-bananas"> ...
。。。
- 。。。
- 。。。
- 。。。
...
...
...
非常感谢您的建议,
svs不确定我是否了解您的需求: 向nav元素添加一个类(例如“active”),该元素的ID与div容器的类匹配(例如“nav primary li”apples)
表示的是id
s,而不是类。CSS类是使用
表示的,例如.myclass
!表达式li
没有意义。你的意思是li#apples
?在这种情况下,你可以将li
去掉:只有一个元素具有id
“apples”无论如何,附加的li
选择器没有帮助
如果该元素的部分ID与#容器的类(例如,div#secondary apples)匹配,则将同一类添加到另一个元素中
也许您正在查找
~=
和*=
?例如,您可以选择E[foo*=“bar”]
。还要确保不要被愚弄。每个方法:jquery通常对所有匹配的元素进行操作。您提供的每个方法可能不是您想要的,因为它不访问这个,也不访问“循环变量”:就我所知,声明不正确。您不需要循环使用.each()
通过导航元素。您只需要正确的导航
多亏了芒奇和记忆之星
Munch-太离谱了!这种简单性正是我从一开始就追求的,但就是无法将其拼凑在一起…顺便说一句,默认情况下没有“活动”类,所以我能够修剪您的解决方案的两行-一件美丽的事情!…我很高兴我以前找到了这个解决方案:
$(document).ready(function() {
var containerClass = $('#container').attr('class');
$('#nav-primary li').each(function(){
var secondaryID = $(this).attr('id');
if ( secondaryID == containerClass )
{
$(this).addClass('active');
$('#aux-left').find('div[id*="'+secondaryID+'"]').each(function(){
$(this).addClass('active');
}); // end #aux-left.find
} // end if
}); // end #nav-primary.each
}); // end doc.ready.func
……但你的更好
非常感谢
干杯,svs谢谢mnemosyn…是的,我对我的问题还不够清楚,但我上面的回答应该会澄清…干杯!
$(document).ready(function() {
var containerClass = $('#container').attr('class');
$('#nav-primary li').each(function(){
var secondaryID = $(this).attr('id');
if ( secondaryID == containerClass )
{
$(this).addClass('active');
$('#aux-left').find('div[id*="'+secondaryID+'"]').each(function(){
$(this).addClass('active');
}); // end #aux-left.find
} // end if
}); // end #nav-primary.each
}); // end doc.ready.func