【问题标题】:jQuery Create New LI tag in existing Bootstrap dropdown menujQuery 在现有的 Bootstrap 下拉菜单中创建新的 LI 标签
【发布时间】:2014-11-25 11:07:08
【问题描述】:

我想创建新的 <li> 元素,它应该通过自动使用 jQuery 将该项目添加到现有的引导下拉菜单 (<ul>) 中。新创建的项目也应该在下拉列表中自动选择。

有人可以帮帮我吗?

提前致谢!

HTML:

<div class="btn-group">
  <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
    Select Items <span class="caret"></span>
  </button>
  <ul class="dropdown-menu reddy" role="menu">
      <li><input type="text" class="form-control"><button type="button" class="btn btn-primary btn-xs">Create New</button></li>
      <li><a href="#"><label for="menuitem1"><input type="checkbox" id="menuitem1" /> Menu Item 1</label></a></li>
      <li><a href="#"><label for="menuitem2"><input type="checkbox" id="menuitem2" /> Menu Item 2</label></a></li>
      <li><a href="#"><label for="menuitem3"><input type="checkbox" id="menuitem3" /> Menu Item 3</label></a></li>
  </ul>
</div>

CSS:

.form-control{max-width:140px;float:left;margin-right:5px;margin-left:10px;}
.btn{margin-top:5px;}
.open>.dropdown-menu{width:250px;}

请在此处的“Fiddle”中找到预览

【问题讨论】:

  • 正式接受可以充分解决您的问题的答案是一种很好的做法。

标签: jquery twitter-bootstrap


【解决方案1】:

您可以使用 append() 方法添加 HTML。要“自动”选择新菜单项中的新复选框,只需将 checked 属性设置为“已选中”

 $("#createnew").on("click", function() {    
    var $dropdown = $(".dropdown-menu.reddy");
    var menuItemNo = $dropdown.find("li").length;
    var menuItemId = "menuitem" + menuItemNo;    

    $dropdown.append("<li><a href='#'><label for='" + menuItemId + "'><input type='checkbox' id='" + menuItemId + "' checked='checked' /> Menu Item " + menuItemNo +"</label></a></li>");
});

在此处查看更新的示例:http://jsfiddle.net/br98nxj9/1/

【讨论】:

  • 真的很抱歉@Chris,但我需要显示新创建的值(“来自文本字段”)而不是菜单项的借口......如果你能帮助我,我不是 jQuery 专家我会更快乐...提前致谢!
  • @Prasad - 您可以通过使用val() 从文本框的 jQuery 对象中提取值来做到这一点。我在这里更新了小提琴:jsfiddle.net/br98nxj9/2
  • 现在变得更好了 :)... 扩展,如何添加验证,如果输入为空,则不应创建菜单项,只需将 .error 类添加到文本域。创建菜单项后,应自动模糊输入值,并且不应允许重复值...我知道我要求太多,但这是要求。可以吗?
  • 您可以使用 jQuery Validate (jqueryvalidation.org) 来完成此操作。我在这里更新了小提琴以显示一个粗略的示例:jsfiddle.net/br98nxj9/3 - 存在一些包装问题,但它显示了如何以最简单的形式使用验证脚本。
【解决方案2】:

刚刚更新了这个“小”。检查这个小提琴http://jsfiddle.net/pamxnouh/

这是使用的 javascript。确保为您的创建按钮提供一个“new-li”ID。

$('#new-li').on('click', function(event){
    event.stopPropagation();
    var x = $(event.target).closest('ul').find("a").size()+1;
    $(event.target).closest('ul').append("<li><a href='#'><label for='menuitem"+x+"'><input type='checkbox' id='menuitem"+x+"' />"+$(event.target).siblings('input').first().val()+"</label></a></li>");
    $(event.target).closest('ul').find('input').each(function(){
        $(this).prop('checked', false);
    });
    $(event.target).closest('ul').find('input').last().prop('checked', true);
});

【讨论】:

  • 嗨 Nils... 感谢您的快速回复。很抱歉,此代码不起作用。由于我是代码的新手,我无法找到确切的问题所在。请检查Fiddle
  • 嗨 Nils,再次感谢您的快速回复 这就像一个冠军......我已经检查了两次 :) 继续努力!
  • 刚刚根据你之前错过的小提琴更新了这个。
猜你喜欢
  • 1970-01-01
  • 2021-10-06
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 2014-07-26
相关资源
最近更新 更多