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

Does using Split() always need to be paired with an array?

本文关键字:数组 Split 是否 使用      更新时间:2023-09-26

我一直在看别人的代码,我被一些语法卡住了,我不能完全理解。

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()方法"返回一个数组对象"。因此,所讨论的子字符串被保存在索引值[0]处(即使数组中没有任何其他值(我假设))。

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

正确吗?我觉得这真的很聪明。但是我不理解为什么分割和数组值一起使用。

另外,我试图使用alert();在$id语句之后直接调用,试图"查看正在创建的内容",但我没有找到任何有用的信息。主要是[object object]和[object HtmlDivElement],它们没有给我任何惊喜。你会做些什么来从$id = $('#' + this.id.split('-')[0] + '-window');// Get window id中收集一些清晰的信息?

如果你读到这里,非常感谢。我已经很多年没有这么开心地看代码了。这是一种很棒的感觉:)

您有以下id

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

因为"this"只指向按钮。Split将ID拆分为一个数组。

(tgx,按钮);因此

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

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

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

编辑

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

将提醒ID

Split方法总是返回一个数组。您正在访问返回数组的第一个索引处的元素。你可以在这里了解更多关于Split的信息