使用Split()总是需要与数组配对吗?

时间:2014-03-27 07:55:49

标签: javascript jquery arrays split ecmascript-5

我一直在看别人的代码而且我坚持一些我无法完全理解的语法。

http://jsfiddle.net/62NPt/53/

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()方法“返回一个Array对象”。所以有问题的子串被保存在索引值[0](即使数组中没有任何值(我假设)。

然后我们追加“-window”并得到我们的最终值:$ id = #tgx-window(如果你点击#tgx-button值)。

这是对的吗?这真的很聪明。但我不明白为什么拆分和数组值一起使用。

另外,我试图使用alert();在$ id语句之后直接调用以尝试“查看正在创建的内容”但我没有找到任何有用的信息。主要是[object Object]和[object HtmlDivElement],它没有给我任何啊哈时刻。你会做些什么来收集行中发生的事情的清晰度:$id = $('#' + this.id.split('-')[0] + '-window');// Get window id ??

如果你读到这里,非常感谢你。多年来我一直没有看到代码那么有趣。这是一种很棒的感觉:))

2 个答案:

答案 0 :(得分:1)

您有以下ID

$windows = $('#tgx-window,#tgs-window,#tgm-window,#tgl-window'), 
$buttons = $('#tgx-button,#tgs-button,#tgm-button,#tgl-button');

由于“this”只会返回按钮。拆分将ID拆分为数组,例如。 (TGX,按钮);

因此

$('#' + this.id.split('-')[0] + '-window');

this.id.split(' - ')[0]将等于tgx(如果单击#tgx-button);

这与

相同
$('#tgx-window'); 

编辑

alert('#' + this.id.split('-')[0] + '-window')

将提醒ID

答案 1 :(得分:1)

Split方法总是返回一个数组。您正在访问返回数组的第一个索引处的元素。 您可以了解有关拆分here

的更多信息