Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环ID';s并添加一个额外的attr()_Javascript_Jquery - Fatal编程技术网

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');
        }
    });