Javascript 循环ID';s并添加一个额外的attr()
我试图根据类名添加一个额外的属性,但它并没有按照我想要的方式工作。 我的菜单结构(简化)如下:Javascript 循环ID';s并添加一个额外的attr(),javascript,jquery,Javascript,Jquery,我试图根据类名添加一个额外的属性,但它并没有按照我想要的方式工作。 我的菜单结构(简化)如下: <ul class="main-menu"> <li> <a>Menu 1</a> <div class="uk-navbar-dropdown"> <div id="km-megamenu-960" class="uk-navbar-dropdown-grid km-mode-click km-meg
<ul class="main-menu">
<li>
<a>Menu 1</a>
<div class="uk-navbar-dropdown">
<div id="km-megamenu-960" class="uk-navbar-dropdown-grid km-mode-click km-megamenu">dropdown content</div>
</div>
</li>
<li><a>Menu 2</a></li>
<li>
<a>Menu 3</a>
<div class="uk-navbar-dropdown">
<div id="km-megamenu-962" class="uk-navbar-dropdown-grid km-mode-hover km-megamenu">dropdown content</div>
</div>
</li>
...
</ul>
var ids = $('.km-megamenu').map(function() {
return this.id;
}).get().join(',#');
$('#' + ids).each( function(i) {
if ( $(this).hasClass('km-mode-click') ) {
$(this).prev(".uk-navbar-dropdown").attr('mode', 'click');
}
if ( $(this).hasClass('km-mode-hover') ) {
$(this).prev(".uk-navbar-dropdown").attr('mode', 'hover');
}
});
基于类名km模式悬停
或km模式单击
,我想在uk导航栏下拉列表中添加一个额外的attr
。例如:
<div class="uk-navbar-dropdown" mode="click">
使用控制台时
所有ID均正确。我只需要正确地循环它们。说到jquery,我还是个新手,
因此,如果有人能让我走上正轨,我将不胜感激。尝试使用.each()传入的元素参数,而不是$(this)
我已经改变了你使用选择器的方式
我没有映射和获取每个id,而是使用了一个类,您希望迭代的元素都有这个类
然后,通过.parent()
更改了.prev()
,因为第一个应该用于查找同级而不是父级
$('.km megamenu')。每个(函数(){
$parent=$(this.parent('.uk导航栏下拉列表');
if($(this).hasClass('km-mode-click')){
$parent.attr('mode','click');
log('New属性:'+$parent.attr('mode'));
}else if($(this).hasClass('km-mode-hover')){
$parent.attr('mode','hover');
log('New属性:'+$parent.attr('mode'));
}
});代码>
-
菜单1
下拉内容
- 菜单2
-
菜单3
下拉内容
您不只是直接在类上循环的任何原因:$('.km megamenu')。每个(…)
var ids = $('.km-megamenu').map(function() {
return this.id;
}).get().join(',#');
$('#' + ids).each( function(index, element) {
if ( element.hasClass('km-mode-click') ) {
element.prev(".uk-navbar-dropdown").attr('mode', 'click');
}
if ( $(this).hasClass('km-mode-hover') ) {
element.prev(".uk-navbar-dropdown").attr('mode', 'hover');
}
});