繁体   English   中英

JavaScript中的动态变量名称

[英]Dynamic variable names in JavaScript

编辑:没关系。 找出问题。 只是将高度设置为数组并命名每个id。 叔叔 不管怎么说,还是要谢谢你。

我已经搜索过,但并没有对此提出太多要求。 我有一个简单的脚本,该脚本只是将下拉菜单悬停时滑出的动画效果。 问题是,如果我在两个或多个菜单项之间快速来回移动,则可以覆盖我在每次悬停开始时设置的height变量。 我已经解决了一个问题,它可以在退出后将其修复,然后通过关闭屏幕时将高度重置为自动来重新打开,但我完全不会阻止它的发生。 通常,我会用我曾经使用过的其他语言来制作动态变量:

$height = $(this).attr("id")+"height";

alert($$height);

//which would theoretically alert the height of whatever triggered it. 

有没有一种方法可以在jQuery中执行,因此调用该函数的每个元素都有其自己的height变量?

EDIT2:由于有兴趣,我将粘贴整个内容。

   $("#NavMenu > li").hover(
           function () {
               var height = {};
               height[$(this).attr("id")] = $(this).find("ul").css("height");
               $(this).find("ul").css("height", "0px");
               $(this).find("ul").css("left", "auto");
               $(this).find("ul").animate({ height: height[$(this).attr("id")] }, 300)
           },
            function () {
                $(this).find("ul").css("left", "-999em");
                $(this).find("ul").css(height, height[$(this).attr("id")])
            }
        )

是的,你可以这么做:

$('.obj').get(0).key = 'value';

要么

$('.obj').get(0)['key'] = 'value'

虽然最好使用.data()

$('.obj').data('key', 'value');

提示

1.您可以链接多个呼叫,如下所示:

$('.obj').css('color', 'red').data('key', 'value');

2.您可以将一个对象传递给.css()

$('.obj').css({
    'width': 100,
    'height': 100
});

3.如果不更改其他CSS属性,则可以使用.width().height()来设置和获取元素的宽度:

的HTML

<div id='box'></div>

的CSS

#box {
    width: 200px;
    height: 100px;
}

的JavaScript

var $box = $('#box');
// 200x100
alert( $box.width() + 'x' + $box.height() );

4.您可能在前面的示例中注意到,我在变量$('#box')保存了对$('#box')的引用。 在某些情况下,您不能使用链接,例如:

var $box = $('#box');
setTimeout(function() {
    $box.animate({ 'width': 100 }, 100);
}, 1000);
setTimeout(function() {
    $box.animate({ 'height': 200 }, 100);
}, 1000);

如果必须这样做,请始终保存对该元素的引用-这称为缓存。 否则,jQuery将不得不多次搜索它。

我不确定为什么要制作自己的滑入和滑出方法。

您可以将jquery的hide()和show()方法(甚至切换)与方法括号内的动画一起使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM