我一直在看别人的代码而且我坚持一些我无法完全理解的语法。
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
??
如果你读到这里,非常感谢你。多年来我一直没有看到代码那么有趣。这是一种很棒的感觉:))
答案 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
的更多信息