【发布时间】:2014-03-27 07:55:48
【问题描述】:
我一直在查看其他人的代码,但遇到了一些我无法完全理解的语法。
var $windows = $('#tgx-window,#tgs-window,#tgm-window,#tgl-window'),
$buttons = $('#tgx-button,#tgs-button,#tgm-button,#tgl-button');
$windows.hide();
$buttons.on('click', function() {
var $id;
$buttons.removeClass('closebutton');
$id = $('#' + this.id.split('-')[0] + '-window');// Get window id
// alert($id);
$windows.slideUp();
if(! $id.is(':visible') ) {
$id.slideDown();
$(this).addClass('closebutton');
}
});
我正在查看的线路是$id = $('#' + this.id.split('-')[0] + '-window');
我试图理解索引数组值:[0] 以及它存在的原因。
根据 ECMAScript 5 规范,使用 split() 方法“返回一个数组对象”。因此,有问题的子字符串被保存在索引值 [0] 处(即使数组中没有更多值(我假设)。
然后我们附加“-window”并获得最终值:$id = #tgx-window(如果您单击了#tgx-button 值)。
这是正确的吗?这真的很聪明。但我不明白 why split 和数组值一起使用。
另外,我试图使用 alert();在 $id 语句之后直接调用以尝试“查看正在创建的内容”,但我没有找到任何有用的信息。主要是 [object Object] 和 [object HtmlDivElement] 没有给我任何啊哈时刻。你会怎么做才能从这条线上发生的事情中弄清楚:$id = $('#' + this.id.split('-')[0] + '-window');// Get window id ??
如果您读到这里,非常感谢。多年来,我从来没有这么开心地看代码。这是一种很棒的感觉:)
【问题讨论】:
-
我不太确定你的问题是什么。
.split总是 返回一个数组。因此,您必须访问要获取的数组元素(在本例中为0)。 -
和上面一样。在您的特定情况下,您正在访问位于“-”符号之前的数组([0])的第一个元素。
-
是的,我认为那是我的困惑。拆分 always 创建一个数组。谢谢
-
alert($id.attr('id'));试试这个。 -
或
console.log($id)。
标签: javascript jquery arrays split ecmascript-5