jQuery提取ul树的一部分

jQuery提取ul树的一部分,jquery,html-lists,Jquery,Html Lists,有人能解释我为什么会得到这个吗。我试图做的是根据匹配的将列表树的一部分复制到另一个中 提供了什么?您需要使用clone()方法来避免移动最初找到的节点/元素: $(document).ready(function (e) { var test = "/our-services/" subNav = $('#mainNav ul').find('a[href$="' + test + '"]').parent().clone(true); $('#thing').

有人能解释我为什么会得到这个吗。我试图做的是根据匹配的
列表树的一部分复制到另一个


提供了什么?

您需要使用
clone()
方法来避免移动最初找到的节点/元素:

$(document).ready(function (e) {
    var test = "/our-services/"
        subNav = $('#mainNav ul').find('a[href$="' + test + '"]').parent().clone(true);

    $('#thing').html(subNav).wrapInner('<ul/>');
});
$(文档).ready(函数(e){
var test=“/our services/”
subNav=$('#mainNav ul').find('a[href$=“'+test+'”).parent().clone(true);
$('#thing').html(subNav).wrapInner('
    '); });

或者,稍微重写一下:

$(document).ready(function (e) {
    var test = "/our-services/",
        subNav = $('#mainNav ul').find('a[href$="' + test + '"]').parent().clone(true);

    subNav.appendTo('#thing').wrap('<ul />');
});
$(文档).ready(函数(e){
var test=“/our services/”,
subNav=$('#mainNav ul').find('a[href$=“'+test+'”).parent().clone(true);
subNav.appendTo(“#thing”).wrap(“
    ”); });

参考资料:


您需要使用
clone()
方法来避免移动最初找到的节点/元素:

$(document).ready(function (e) {
    var test = "/our-services/"
        subNav = $('#mainNav ul').find('a[href$="' + test + '"]').parent().clone(true);

    $('#thing').html(subNav).wrapInner('<ul/>');
});
$(文档).ready(函数(e){
var test=“/our services/”
subNav=$('#mainNav ul').find('a[href$=“'+test+'”).parent().clone(true);
$('#thing').html(subNav).wrapInner('
    '); });

或者,稍微重写一下:

$(document).ready(function (e) {
    var test = "/our-services/",
        subNav = $('#mainNav ul').find('a[href$="' + test + '"]').parent().clone(true);

    subNav.appendTo('#thing').wrap('<ul />');
});
$(文档).ready(函数(e){
var test=“/our services/”,
subNav=$('#mainNav ul').find('a[href$=“'+test+'”).parent().clone(true);
subNav.appendTo(“#thing”).wrap(“
    ”); });

参考资料:


    • 有趣的行为!这可能是因为jQuery在幕后做了一些奇怪的事情,因为它希望将
      字符串
      传递给
      .html()
      方法,但您正在传递一个包裹在jQuery对象中的整个dom节点。看

      尝试获取该节点的html内容,并将其传递给
      .html()
      方法,如下所示:

      $(document).ready(function (e) {
        var test = "/our-services/";
        var subNav = $('#mainNav ul').find('a[href$="' + test + '"]').parent();
        $('#thing').html(subNav.html()).wrapInner('<ul/>');
      });
      
      $(文档).ready(函数(e){
      var test=“/our services/”;
      var subNav=$('#mainNav ul').find('a[href$=“'+test+'”).parent();
      $('#thing').html(subNav.html()).wrapInner('
        '); });
      编辑 请记住,这将剥离附加到原始节点的任何数据或事件处理程序,根据您的实现,这些行为可能是必需的,也可能不是必需的。如果要保留它们,请使用另一个答案中描述的
      clone()
      方法,但使用
      clone(true)
      而不是默认的
      clone(false)

      另见:
      有关.html()方法接受jQuery对象和字符串的原因的说明。

      有趣的行为!这可能是因为jQuery在幕后做了一些奇怪的事情,因为它希望将
      字符串
      传递给
      .html()
      方法,但您正在传递一个包裹在jQuery对象中的整个dom节点。看

      尝试获取该节点的html内容,并将其传递给
      .html()
      方法,如下所示:

      $(document).ready(function (e) {
        var test = "/our-services/";
        var subNav = $('#mainNav ul').find('a[href$="' + test + '"]').parent();
        $('#thing').html(subNav.html()).wrapInner('<ul/>');
      });
      
      $(文档).ready(函数(e){
      var test=“/our services/”;
      var subNav=$('#mainNav ul').find('a[href$=“'+test+'”).parent();
      $('#thing').html(subNav.html()).wrapInner('
        '); });
      编辑 请记住,这将剥离附加到原始节点的任何数据或事件处理程序,根据您的实现,这些行为可能是必需的,也可能不是必需的。如果要保留它们,请使用另一个答案中描述的
      clone()
      方法,但使用
      clone(true)
      而不是默认的
      clone(false)

      另见:
      有关.html()方法接受jQuery对象和字符串的原因的说明。

      您可能应该在
      subNav
      上使用,在您的示例中,
      subNav
      是树的一部分,您可能应该在
      subNav
      上使用,
      subNav
      是树的一部分,与post相同,XD。您只需使用$('#thing').html(subNav.clone()).wrapInner('
        ');同样的帖子,XD。您只需使用$('#thing').html(subNav.clone()).wrapInner('
          ');