1

我只是没有足够的javascript经验来调试它。任何帮助将不胜感激。

在下面的代码中,我不确定我的

    switch($el_title.innerHTML)

还是我的

    .animate( style , 400, function() {

不正确的陈述。可能两者兼而有之。

我不确定 $el_title.innerHTML 是否正确。对应的 HTML 如下所示

    <ul>
      <li>
        <a href="images/Appetizers.jpg">About</a>
    ...

我创建了一个样式变量作为​​对象 style = {}; 我认为这就是如何使对象变量。将该样式变量传递给 .animate 似乎不起作用。

这是完整的代码:

      initEventsSubMenu = function() {
        $menuItems.each(function(i) {
          var $item       = $(this), // the <li>
          $el_title       = $item.children('a:first'),
          el_image        = $el_title.attr('href'),
          $sub_menu       = $item.find('.ac_subitem'),
          $ac_close       = $sub_menu.find('.ac_close'),
          style           = {};

      switch($el_title.innerHTML)
        {
          case 'About':
                       style = {height:'400px',marginTop:'-200px'};
                       break;
          case 'Menu':
                      style = {height:'200px',marginTop:'-150px'};
                      break;
          case 'Take-Out':
                      style = {height:'500px',marginTop:'-250px'};
                      break;
          case 'Gallery':
                      style = {height:'200px',marginTop:'-150px'};
                      break;
          case 'Contact':
                      style = {height:'400px',marginTop:'-200px'};
                      break;
          default:
                      style = {height:'400px',marginTop:'-200px'};
        }

        $el_title.bind('click.Menu', function(e) {
           $.when(toggleMenuItems('down')).done(function(){
              openSubMenu($item, $sub_menu, el_image);
           });
        return false;
        });

        /* closes the submenu */
        $ac_close.bind('click.Menu', function(e) {
          closeSubMenu($sub_menu);
        return false;
        });
      });
    },
        openSubMenu     = function($item, $sub_menu, el_image, style) {
          $sub_menu.stop()
          .animate( style , 400, function() {

              /*
              .animate({
                 height          : '200px',
                 marginTop       : '-150px'
               }, 400, function() { 
              */

另外 - 我知道底部的注释代码有效。而且我确信我的右括号没问题。

谢谢您的帮助。

4

1 回答 1

0

$el_title是一个 jQuery 对象,但是.innerHTML是一个 DOM 元素属性。您应该使用$el_title.text()而不是$el_title.innerHTML.

改变:

openSubMenu($item, $sub_menu, el_image);

至:

openSubMenu($item, $sub_menu, el_image, style);

于 2013-06-07T01:38:53.107 回答