【问题标题】:How to add element inside another element with jquery如何使用jquery在另一个元素内添加元素
【发布时间】:2021-09-05 01:02:52
【问题描述】:

嘿,我正在尝试使用 jquery 在 <li> 中添加 <a> 标记,但我正在努力寻找正确的方法。 这是我的代码示例:

$dropdown.find('ul').append($('<li></li>').append($('<a></a>'))
    .attr('href', $option.val())
    .attr('data-display', (display || null))
    .addClass('option ' + customClassEtay +
    ($option.is(':selected') ? ' selected' : '') +
    ($option.is(':disabled') ? ' disabled' : ''))
    .html($option.text())

【问题讨论】:

  • 请包含所有相关代码,例如 $dropdown、display、customClassEtay 和 option 是什么
  • 只做.append('&lt;a /&gt;')怎么样?不需要创建一个 jQuery 对象然后追加它。

标签: javascript html jquery web frontend


【解决方案1】:

您可以直接将其添加到列表项字符串中。

【讨论】:

    【解决方案2】:

    作为参考,以这种方式将 html 附加到元素将需要 .appendTo() 方法。

    $('<li><a></a></li>').appendTo('ul').otherChainableMethods();
    

    如果我不得不猜测,你可能正在尝试做这样的事情:

    $dropdown.on('change', function() {
      let $option = $(this).find('option:selected');
    
      $('ul') //most likely not a child of the $dropdown
        .append(`<li><a class="option ${customClassEtay}" data-display="${display || null}" href="${$option.val()}">${$option.text()}</a></li>`);
    ;})
    

    如果您选择它,该选项将为:selected,并且在disabled 时不可选择,所以我不确定您要在那里做什么。

    `${}` 是template literals。

    【讨论】:

      【解决方案3】:

      您正在尝试将&lt;a&gt;&lt;/a&gt; 添加到&lt;li&gt;&lt;/li&gt; 中,对吗?但是从您上面的代码中它不起作用,为什么?因为&lt;li&gt;&lt;/li&gt; 还没有插入到DOM 树中

      尝试这样做

      
      $('#someElem').append('<li></li>').delay(3000).append('<a></a>')
      

      这应该可行!

      重新定义解决方案

      这是在 JQuery Official Website 上测试的

      
      $('#testingInsert')
      // insert the list elem into the <ul> tag with an id that uniquely identified it
      .append("<li id='listItem1'>New List Item2</li>")
      // fade the newly added list item 
      .fadeOut(function(){ 
           // Now search for that newly added list item and add the <a> to into it
           $(this)
          .find('#listItem1')
          .append('<a href="#snoop">A tag elem </a>');
      
          // That's it, it work perfectly 
      }).fadeIn();
      
      

      我希望这可以帮助您实现您想要实现的目标,因为这只是完成任务的方法。

      【讨论】:

      • 我确实尝试过这样做,但我没有在
      • 中得到任何东西。
    • 这是我生成的,例如:
    • Čeština
    • 我只是想尝试在其中添加 标签
    • 我有运行代码的三元组,我发现使用上述方法它不会起作用,只需使用此方法,因为您想要实现的只是列表标签&lt;li&gt;&lt;/li&gt; 中的&lt;a&gt;&lt;/a&gt; 和来自上面的代码就像你附加&lt;li&gt;&lt;/li&gt; 一样,你也需要附加一个标签&lt;a&gt;&lt;/a&gt;。那么,为什么不像这样同时附加两者:js $('#targetHost').append('&lt;li&gt;&lt;a&gt;&lt;/a&gt;&lt;/li&gt;`) 以简化您的工作并加快您的成就。
    • 来自https://api.jquery.com/delay/:.delay() 方法最适合在排队的jQuery 效果之间进行延迟。因为它是有限的——例如,它不提供取消延迟的方法——.delay() 不能替代 JavaScript 的原生 setTimeout 函数,它可能更适合某些用途案例。
    • 猜你喜欢
      相关资源
      最近更新 更多
      热门标签