-1

Javascript関数内でこの4つのJQuery呼び出しを生成する必要があります。

$(".dropdown-menu .1_147").hover(
  function() { $("#1_147").show(); },
  function() { $("#1_147").hide(); }
);

$(".dropdown-menu .2_147").hover(
  function() { $("#2_147").show(); },
  function() { $("#2_147").hide(); }
);

$(".dropdown-menu .3_147").hover(
  function() { $("#3_147").show(); },
  function() { $("#3_147").hide(); }
);

$(".dropdown-menu .4_147").hover(
  function() { $("#4_147").show(); },
  function() { $("#4_147").hide(); }
);

Javascript関数を作成しましたが、FORループは最後のインタラクション「4_147」のみを生成します。4つのJQuery呼び出しを生成するようにJavascriptに指示するにはどうすればよいですか?

私の現在のJavaScript:

var submenu_navigation = document.getElementsByClassName("dropdown-menu");
var submenu_navigation_list = submenu_navigation[0].getElementsByTagName('li');

/*console.log(submenu_navigation_list);*/

function generateDropdownMenuMoldura(lis_array) {

    for (var item in lis_array) {

        var item_class_attr_name = lis_array[item].getAttribute('class');

        console.log(item_class_attr_name);

        $(".dropdown-menu ." + item_class_attr_name).hover(
          function() { $("#" + item_class_attr_name).show(); },
          function() { $("#" + item_class_attr_name).hide(); }
        );


    }   
}


generateDropdownMenuMoldura(submenu_navigation_list);

手がかりはありますか?

よろしくお願いします、


アップデート:

私は解決策を得ました:

/* Define the Elements that I need to loop */
var submenu_navigation = document.getElementsByClassName("dropdown-menu");
var submenu_navigation_list = submenu_navigation[0].getElementsByTagName('li');


function generateDropdownMenuMoldura(lis_array) {

    for (var item in lis_array) {

        var item_class_attr_name = lis_array[item].getAttribute('class');

        console.log(item_class_attr_name);

        (function(item_class_attr_name) {
            $(".dropdown-menu ." + item_class_attr_name).hover(
              function() { $("#" + item_class_attr_name).show(); },
              function() { $("#" + item_class_attr_name).hide(); }
            );
        })(item_class_attr_name);


    }   
}


generateDropdownMenuMoldura(submenu_navigation_list);

私の質問は、この無名関数呼び出しはどのように機能するのですか?これは再帰手法ですか?

よろしくお願いします、

4

2 に答える 2

0

メソッドを見てくださいjQuery.each('dropdown-menu')。forループです。

HTMLサンプル

<ul>
  <li>foo</li>
  <li>bar</li>
</ul>

jQueryサンプル

$( "li" ).each(function( index ) {
  console.log( index + ": " + $( this ).text() );
});
于 2012-08-09T12:36:28.127 に答える
0

特定の解決策を修正する方法は、他の質問ですでに回答されています。

しかし、なぜそんなに複雑なのですか?現在使用しているJavaScriptから判断し、スコープ以外のすべてが正常に機能すると仮定すると、より簡単な解決策は次のようになります。

$(".dropdown-menu li").hover(function() { 
    $('#' + this.className).show(); 
}, function() { 
    $('#' + this.className).hide();
});

これらの要素はすべて基本的に同じことを行うため、これらの要素のそれぞれに異なるハンドラーをバインドする必要はありません。

于 2012-08-09T12:42:35.880 に答える