将ul转换为<select>和<option>并保持类</option> </select>

时间:2014-06-03 11:49:37

标签: jquery

我尝试将菜单(ulli s)转换为移动设备selectoption。我想保留已经存在<li>个元素的类。我可以转换它们,但我不知道如何让班级从lioption。我该怎么办?

jQuery(document).ready(function ($) {
       if ($(window).width() < 639) {
           $('ul#nav').each(function () {
               var list = $(this),
                   select = $(document.createElement('select')).insertBefore($(this).hide());

               $('>li a', this).each(function () {
                   var target = $(this).attr('target'),
                       option = $(document.createElement('option'))
                           .appendTo(select)
                           .val(this.href)
                           .html($(this).html())
                           .click(function () {
                           if (target === '_blank') {
                               window.open($(this).val());
                           } else {
                               window.location.href = $(this).val();
                           }
                       });
               });
               list.remove();
           });
       }
   });

3 个答案:

答案 0 :(得分:1)

  1. 您可以使用closest()获取对li的引用。

  2. class是一个与target类似的属性。只需使用class上的attr()获取li,然后使用attr()上的option进行保存。

  3. 我不会给你代码,因为你最好自己写代码。

答案 1 :(得分:0)

使用您提供的代码,您可以尝试:

$('>li a', this).each(function() {
    var target = $(this).attr('target'),
    var classes = $(this).parent('li').attr('class'), //store the classes in the element
    option = $(document.createElement('option'))
        .appendTo(select)
        .val(this.href)
        .addClass(classes) //add the classes to the new option element
        .html($(this).html())
        ...

答案 2 :(得分:0)

试试这个

var cls= $(this).attr('class')

将此课程添加到option

$(document.createElement('option'))
                           .appendTo(select)
                           .val(this.href)
                           .html($(this).html()).addClass(cls)