【问题标题】:Select element in Jquery selector by class name and convert it back to Jquery object按类名在 Jquery 选择器中选择元素并将其转换回 Jquery 对象
【发布时间】:2018-06-14 03:12:04
【问题描述】:

我不明白为什么当我像在传统 JS 中那样寻找如何在按类名选择的元素列表中获取元素时,我总是看到复杂的答案。

document.getElementsByClassName('anyclass')[1]

所以,我发现自己做不到(可能是错误的方法)

$('.anyclass')[1]

但我得到了一个 DOM 元素!所以逻辑上我试过了

$('.anyclass')[1][0]

它不起作用'TypeError: $(...)[0][0] is undefined' 任何人都可以解释为什么?谢谢!

【问题讨论】:

  • $('.anyclass')[1] 指的是DOM元素,你不需要做[1][0]
  • 我不知道你想做什么,但如果你想选择一个包含在 jQuery 对象中的集合中的特定元素,请使用eq(),例如$('.anyclass').eq(1) 会得到第二个.anyclass 元素
  • 我想做什么: $('.anyclass') 用这个类获取所有元素 $('.anyclass')[1] 然后挑选一个 DOM 元素 $('.anyclass') [1][0] 最终通过我在旧帖子上看到的这种思维方式将其转换回 Jquery 对象 var elm = document.createElement("div"); var jelm = $(榆树); //转换为 jQuery 元素 var htmlElm = jelm[0]; //转换为 HTML 元素”,但确实我猜 .eq() 工作正常,但我想了解为什么我的逻辑不起作用

标签: javascript jquery object dom element


【解决方案1】:

我觉得你需要.eq(index)

var secondElement = $('.anyClass').eq(1); //jQuery object
var domElement = secondElement[0]; //DOM element
console.log(secondElement, domElement)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='anyClass'>1</div>
<div class='anyClass'>2</div>

【讨论】:

  • 是的,我见过!但正如我所说,我想了解为什么我的逻辑不起作用:/?为什么 $('.anyclass')[0][0] 不起作用?因为对我来说,它选择了一个 DOM 元素,然后我将其转换为 Jquery 元素,我不需要 .eq() ,对吗?
  • @DoupDoup $('.anyclass')[1] 返回 DOM 元素,它不是数组,所以 $('.anyclass')[1][0] 返回 undefined。您的理解然后我将其转换为Jquery 元素错误。要转换为 jQuery,您需要 $($('.anyclass')[1])
【解决方案2】:
var elm = document.createElement("div");
var jelm = $(elm); //convert to jQuery Element
var htmlElm = jelm[0]; //convert to HTML Element

【讨论】:

    【解决方案3】:

    :first 伪类等价于:eq( 0 )。也可以写成:lt( 1 )。虽然这仅匹配单个元素,但 :first-child 可以匹配多个元素:每个父元素一个。

    这里

    $('.anyclass:first)
    

    快速示例:

    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        $($(".t")[1]).css("background-color", "yellow");
    });
    </script>
    </head>
    <body>
    
    <p class=t>This 1.</p>
    <p class=t>This 2.</p>
    <p class=t>This 3.</p>
    
    </body>
    </html>

    '

    $('.anyclass')[0].attr("src");  you can use like this .
    

    在您发表评论后: $(".anyclass")[1] 是 DOM 元素而不是 jquery 对象。只需将其包装为 jquery $($("td")[1]).width()

    【讨论】:

    • 是的,谢谢!但正如我所说,我想了解为什么我的逻辑不起作用:/?
    • $('.anyclass')[1][0] 在这个你得到错误吧?
    • 是的! 'TypeError: $(...)[0][0] 未定义'
    • 你希望用$('.anyclass')[1][0]做什么
    • 同$(".anyclass").eq(1)
    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多