Javascript 如何从jQuery检索使用JS点符号存储的数据?

Javascript 如何从jQuery检索使用JS点符号存储的数据?,javascript,jquery,dom,syntax,store,Javascript,Jquery,Dom,Syntax,Store,我有一个脚本,它用JS和 testel = document.getElementById('#myLi'); testel.angle = 20; 如何使用JQ检索该值? 我尝试创建一个新的元素引用,比如$('#testel').angle或$('#testel').data('angle'),但没有任何效果 数据存储在哪里?甚至可能吗?您可以使用来获取底层DOM元素: var angle = $("#testel").get(0).angle; var a = $('#testel')[

我有一个脚本,它用JS和

testel = document.getElementById('#myLi');
testel.angle = 20;
如何使用JQ检索该值? 我尝试创建一个新的元素引用,比如
$('#testel').angle
$('#testel').data('angle')
,但没有任何效果

数据存储在哪里?甚至可能吗?

您可以使用来获取底层DOM元素:

var angle = $("#testel").get(0).angle;
var a = $('#testel')[0].angle;
//                  ^^^-------- Gets the raw DOM element from the jQuery object

var a = $('#testel').get(0).angle;
//                  ^^^^^^^-------- This does too
或使用数组索引:

var angle = $("#testel")[0].angle;
您可以使用获取基础DOM元素:

var angle = $("#testel").get(0).angle;
var a = $('#testel')[0].angle;
//                  ^^^-------- Gets the raw DOM element from the jQuery object

var a = $('#testel').get(0).angle;
//                  ^^^^^^^-------- This does too
或使用数组索引:

var angle = $("#testel")[0].angle;

因为要为该元素设置一个属性,所以使用


因为要为该元素设置一个属性,所以使用

通过使用:

或使用:

通过使用:

或使用:

如何使用JQ检索该值

两种方式:

  • 从原始DOM元素获取它:

    var angle = $("#testel").get(0).angle;
    
    var a = $('#testel')[0].angle;
    //                  ^^^-------- Gets the raw DOM element from the jQuery object
    
    var a = $('#testel').get(0).angle;
    //                  ^^^^^^^-------- This does too
    
  • 使用
    道具

    var a = $('#testel').prop('angle');
    
  • 数据存储在哪里

    这叫做“expando”属性。它存储在原始DOM元素上。通常,最好尽量避免使用它们(避免与可能定义的新标准属性冲突,避免与页面上的其他脚本冲突)。如果不能,最好只使用其中一个(如果需要更多信息,通常指的是放置其他属性的对象)

    我尝试创建一个新的元素引用,比如
    $('#testel').angle
    $('#testel').data('angle')
    ,但没有任何效果

    jQuery的
    data
    函数将信息存储在不同的区域(以避免expando问题)。如果可以,我建议更改代码设置值,通过jQuery的
    数据设置它:

    $('#testel').data('angle', 20);
    
    …当然,您可以用同样的方法检索它:

    var a = $('#testel').data('angle');
    

    正如下面的评论所指出的,您的代码有点不匹配。你说你这样做是为了设置它:

    testel = document.getElementById('#myLi');
    testel.angle = 20;
    
    …但尝试使用此来检索它时:

    $("#testel").angle // (and such)
    
    您的
    getElementById
    代码查找ID为
    #myLi
    的元素(包括
    #
    开头的
    #
    ,作为
    ID
    的一部分)。虽然这是有效的(您可以在HTML中执行,而不是在CSS中),但您实际上不太可能有:

    <li id="#myLi">...</li>
    
  • 在您的文档中。您可能不希望在
    getElementById
    调用中使用
    #
    。(您提供的是一个ID字符串,而不是CSS选择器)

    不管怎样,您都希望设置和检索时使用的
    id
    匹配。因此,如果是
    myLi
    ,请使用
    getElementById(“myLi”)
    $(“#myLi”)

    如何使用JQ检索该值

    两种方式:

  • 从原始DOM元素获取它:

    var angle = $("#testel").get(0).angle;
    
    var a = $('#testel')[0].angle;
    //                  ^^^-------- Gets the raw DOM element from the jQuery object
    
    var a = $('#testel').get(0).angle;
    //                  ^^^^^^^-------- This does too
    
  • 使用
    道具

    var a = $('#testel').prop('angle');
    
  • 数据存储在哪里

    这叫做“expando”属性。它存储在原始DOM元素上。通常,最好尽量避免使用它们(避免与可能定义的新标准属性冲突,避免与页面上的其他脚本冲突)。如果不能,最好只使用其中一个(如果需要更多信息,通常指的是放置其他属性的对象)

    我尝试创建一个新的元素引用,比如
    $('#testel').angle
    $('#testel').data('angle')
    ,但没有任何效果

    jQuery的
    data
    函数将信息存储在不同的区域(以避免expando问题)。如果可以,我建议更改代码设置值,通过jQuery的
    数据设置它:

    $('#testel').data('angle', 20);
    
    …当然,您可以用同样的方法检索它:

    var a = $('#testel').data('angle');
    

    正如下面的评论所指出的,您的代码有点不匹配。你说你这样做是为了设置它:

    testel = document.getElementById('#myLi');
    testel.angle = 20;
    
    …但尝试使用此来检索它时:

    $("#testel").angle // (and such)
    
    您的
    getElementById
    代码查找ID为
    #myLi
    的元素(包括
    #
    开头的
    #
    ,作为
    ID
    的一部分)。虽然这是有效的(您可以在HTML中执行,而不是在CSS中),但您实际上不太可能有:

    <li id="#myLi">...</li>
    
  • 在您的文档中。您可能不希望在
    getElementById
    调用中使用
    #
    。(您提供的是一个ID字符串,而不是CSS选择器)


    不管怎样,您都希望设置和检索时使用的
    id
    匹配。因此,如果它是
    myLi
    ,请使用
    getElementById(“myLi”)
    $(“#myLi”)
    (“#myLi”)。get(0)。angle
    $(testel)。get(0)。angle
    $(testel)[0]。angle
    顺便说一句,它应该是:
    document.getElementById('myLi')提问时,请提供相关的代码,而不是不相关的代码,这些代码显然不起作用。
    $(“#myLi”).get(0).angle
    $(testel).get(0).angle
    $(testel)[0].angle
    顺便说一句,它应该是:
    document.getElementById('myLi')提问时,请提供相关的代码,不是不相关的代码,这显然不起作用。这不是属性,而是属性。可能适用于早期版本的jQuery,但不适用于1.6+。我不知道是属性还是属性,但我只知道必须从不同的函数快速访问它,以足够快的速度计算16个对象的x和y,以生成类似蠕虫的平滑动画。我试图避免将其写入实际的DOM,因为我已经了解到遍历DOM来检索它的速度较慢(显然我还不太了解js或jq,因此无法断言数据。('angle')也不会遍历DOM,但是,“我可能不知道我需要去哪里,但我知道我在逃避什么。”。它不是属性,而是属性。可能适用于早期版本的jQuery,但不适用于1.6+。我不知道是属性还是属性,但我只知道必须从不同的函数快速访问它,才能计算