javascript - 挖掘 JavaScript 对象的路径

标签 javascript jquery object

我正在尝试提取 MultiLevelPushMenu 插件中当前元素的根路径。

https://github.com/adgsm/multi-level-push-menu

所有者给出了将根级路径提取到文档中的方法

/**
 * Find path to root of selected menu level object
 * Provides chain collection of menu level objects (root menu level object to given menu level object), or false in case of error
 */
$('#menu').multilevelpushmenu('pathtoroot', $menuLevelObject);

我已尝试按照指南使用相同的方法,但我得到的是 HTMLLiobject,但无法深入挖掘路径。

我需要从这个集合中获取字符串格式的路径,有什么帮助吗?

这是我的代码..

$(document).ready(function(){
// HTML markup implementation, overlap mode
$( '#menu' ).multilevelpushmenu({
containersToPush: [$( '#pushobj' )],
menuWidth: '25%',
menuHeight: '100%',
onItemClick: function() {
// First argument is original event object
var event = arguments[0],
// Second argument is menu level object containing clicked item (

element)
$menuLevelHolder = arguments[1],
// Third argument is clicked item (
element)
$item = arguments[2],
// Fourth argument is instance settings/options object
options = arguments[3];
    // You can do some cool stuff here before
    // redirecting to href location
    // like logging the event or even
    // adding some parameters to href, etc...
    var path = $('#menu').multilevelpushmenu('pathtoroot', $item);

    alert(path);
}
});
});

here is what I'm getting

最佳答案

下面更新的例子应该给你:

/All Categories/Devices/Mobile Phones/Super Smart Phone

单击最后一个元素 - 而不是您当前正在获取的对象字符串...

$(document).ready(function(){
  // HTML markup implementation, overlap mode
  $( '#menu' ).multilevelpushmenu({
    containersToPush: [$( '#pushobj' )],
    menuWidth: '25%',
    menuHeight: '100%',
    onItemClick: function() {
      // First argument is original event object
      var event = arguments[0],
      // Second argument is menu level object containing clicked item (element)
      $menuLevelHolder = arguments[1],
      // Third argument is clicked item (element)
      $item = arguments[2],
      // Fourth argument is instance settings/options object
      options = arguments[3];
      // You can do some cool stuff here before
      // redirecting to href location
      // like logging the event or even
      // adding some parameters to href, etc...
      var path = $('#menu').multilevelpushmenu('pathtoroot', $item);

      //console.log(path);
      //console.log('element0: ', path[0]);
      //console.log('element1: ', path[1]);
      //console.log('----------------------------------');
      //console.log('element0 inner html: ', $(path[0]).html());

      var s = ''; // string to hold path

      for(var i = 0, length = path.length; i < length; i++)
      {
          var html = $(path[i]).find('h2').html();
          if(html) s += '/' + html.split('</i>')[1];
      }
      s += '/' + $item.find('a').text();
      console.log(s);

    }
  });
});
<link href="http://multi-level-push-menu.make.rs/demo/jquery.multilevelpushmenu.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://multi-level-push-menu.make.rs/demo/jquery.multilevelpushmenu.min.js"></script>

<div id="menu">
  <nav>
    <h2><i class="fa fa-reorder"></i>All Categories</h2>
    <ul>
        <li>
            <a href="#"><i class="fa fa-laptop"></i>Devices</a>
            <h2><i class="fa fa-laptop"></i>Devices</h2>
            <ul>
                <li>
                    <a href="#"><i class="fa fa-phone"></i>Mobile Phones</a>
                    <h2><i class="fa fa-phone"></i>Mobile Phones</h2>
                    <ul>
                        <li>
                            <a href="#">Super Smart Phone</a>
                        </li>
                        <li>
                            <a href="#">Thin Magic Mobile</a>
                        </li>
                        <li>
                            <a href="#">Performance Crusher</a>
                        </li>
                        <li>
                            <a href="#">Futuristic Experience</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href="#"><i class="fa fa-desktop"></i>Televisions</a>
                    <h2><i class="fa fa-desktop"></i>Televisions</h2>
                    <ul>
                        <li>
                            <a href="#">Flat Super Screen</a>
                        </li>
                        <li>
                            <a href="#">Gigantic LED</a>
                        </li>
                        <li>
                            <a href="#">Power Eater</a>
                        </li>
                        <li>
                            <a href="#">3D Experience</a>
                        </li>
                        <li>
                            <a href="#">Classic Comfort</a>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href="#"><i class="fa fa-camera-retro"></i>Cameras</a>
                    <h2><i class="fa fa-camera-retro"></i>Cameras</h2>
                    <ul>
                        <li>
                            <a href="#">Smart Shot</a>
                        </li>
                        <li>
                            <a href="#">Power Shooter</a>
                        </li>
                        <li>
                            <a href="#">Easy Photo Maker</a>
                        </li>
                        <li>
                            <a href="#">Super Pixel</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
        <li>
            <a href="#"><i class="fa fa-book"></i>Magazines</a>
            <h2><i class="fa fa-book"></i>Magazines</h2>
            <ul>
                <li>
                    <a href="#">National Geographics</a>
                </li>
                <li>
                    <a href="#">The Spectator</a>
                </li>
                <li>
                    <a href="#">Rambler</a>
                </li>
                <li>
                    <a href="#">Physics World</a>
                </li>
                <li>
                    <a href="#">The New Scientist</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#"><i class="fa fa-shopping-cart"></i>Store</a>
            <h2><i class="fa fa-shopping-cart"></i>Store</h2>
            <ul>
                <li>
                    <a href="#"><i class="fa fa-tags"></i>Clothes</a>
                    <h2><i class="fa fa-tags"></i>Clothes</h2>
                    <ul>
                        <li>
                            <a href="#"><i class="fa fa-female"></i>Women's Clothing</a>
                            <h2><i class="fa fa-female"></i>Women's Clothing</h2>
                            <ul>
                                <li>
                                    <a href="#">Tops</a>
                                </li>
                                <li>
                                    <a href="#">Dresses</a>
                                </li>
                                <li>
                                    <a href="#">Trousers</a>
                                </li>
                                <li>
                                    <a href="#">Shoes</a>
                                </li>
                                <li>
                                    <a href="#">Sale</a>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a href="#"><i class="fa fa-male"></i>Men's Clothing</a>
                            <h2><i class="fa fa-male"></i>Men's Clothing</h2>
                            <ul>
                                <li>
                                    <a href="#">Shirts</a>
                                </li>
                                <li>
                                    <a href="#">Trousers</a>
                                </li>
                                <li>
                                    <a href="#">Shoes</a>
                                </li>
                                <li>
                                    <a href="#">Sale</a>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href="#">Jewelry</a>
                </li>
                <li>
                    <a href="#">Music</a>
                </li>
                <li>
                    <a href="#">Grocery</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#">Collections</a>
        </li>
        <li>
            <a href="#">Credits</a>
        </li>
    </ul>
  </nav>
</div>

关于javascript - 挖掘 JavaScript 对象的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132819/

相关文章:

javascript - 将数组中所有对象的单个字段复制到单个数组中

设置对象属性时出现 C++ 内存访问冲突

javascript - 如何在另一个键/值对中使用定义的键

javascript - 两个相同的字符串如何彼此不相等?

javascript - Angular Schema 表单从 JSON 加载数据

javascript - 来自另一个页面的正文加载中的ajax弹出中心

javascript - 对选择元素选项进行排序并保留焦点

javascript - 带函数的 JavaScript 闭包是如何工作的?

javascript - 将 JSON 对象数组映射到字符串

jquery - DataTables 分页似乎不适用于服务器端数据