【问题标题】:Does using Split() always need to be paired with an array?使用 Split() 是否总是需要与数组配对?
【发布时间】:2014-03-27 07:55:48
【问题描述】:

我一直在查看其他人的代码,但遇到了一些我无法完全理解的语法。

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 值)。

这是正确的吗?这真的很聪明。但我不明白 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


【解决方案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

【讨论】:

  • 谢谢。它终于点击了!对于他/她试图完成的事情来说,这似乎真的很聪明。或者我只是在这个阶段很容易印象深刻:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 2016-10-09
    • 1970-01-01
    • 2013-03-08
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多