jQuery:用一条链定义多个变量
jQuery: Define multiple variables with a single chain?
是否可以用单个jQuery链定义多个变量?
var sectionTable = jQuery("#sectionsTable");
var sectionTableRows = sectionTable.find("tr");
var sectionTableColumns = sectionTableRows.find("td");
我不知道语法是什么,如果它是可能的,但如果你把上面的3个变量,你怎么能把它们链起来,它会被认为是良好的实践吗?
多谢克里斯
编辑:哇,感谢所有的评论。对不起,我是模糊的,我所追求的是一个更好的方式(如果存在的话)从父变量定义子变量。这就是为什么我想到使用链条,并想知道是否存在一种方法。谢谢你的建议。
如果你真的想,一切皆有可能:
在我的脑海中,你可以试着这样做:
var sectionTable,
sectionTableRows,
sectionTableColumns = $('td', (sectionTableRows = $('tr',(sectionTable = $('#sectionsTable')))));
另一个想法是构建一个迷你插件,将当前jquery对象分配给对象的特定字段:
jQuery.fn.assignTo = function(variableName,namespace){
var ns = namespace || window;
ns[variableName] = this;
return this;
}
使用这种代码,您可以执行以下操作:
var sections = {};
jQuery("#sectionsTable")
.assignTo('sectionTable',sections)
.find("tr")
.assignTo('sectionTableRows',sections)
.find("td")
.assignTo('sectionTableColumns',sections);
console.log(sections.sectionTable);
console.log(sections.sectionTableRows);
console.log(sections.sectionTableColumns);
当然,如果你没有指定任何命名空间,变量将是全局的(将附加到window对象);
无论如何,我不鼓励您使用这些示例,因为为了支持更少的等号和var
声明而降低代码的可读性并没有多大意义。
我可能不太明白您想要什么或需要什么,但是您可以为jQuery包装集链接任何函数并"结束"它,从而"返回"到前一个集。例如:
jQuery("#sectionsTable").css('background-color', 'red')
.find('tr').css('background-color', 'yellow')
.find('td').css('background-color', 'black')
.end() // back to 'tr'
.doSomething()
.end() // back to '#sectionsTable'
.doSomething();
但是,这意味着您只需要访问一次元素。如果您需要稍后在代码中访问它们,出于性能原因,总是应该将结果引用存储在变量中。
您可以这样重写:
var $sectionTable = $('#sectionsTable'),
$sectionTableRows = $('tr', $sectionTable),
$sectionTableColumns = $('td', $sectionTableRows);
当然,这只有在你要使用这三个变量的时候才有用。
我唯一想到的是单变量声明,如:
var sectionTable = jQuery("#sectionsTable"),
sectionTableRows = sectionTable.find("tr"),
sectionTableColumns = sectionTableRows.find("td");
你为什么要这么做?
定义这三个变量有什么问题?
(不,你不能)。如果您根本不需要 sectionTable
或sectionTableRows
变量,您当然可以这样做;
var sectionTableColumns = jQuery("#sectionsTable").find("tr").find("td");
使用后代选择器时,可以将其缩短为;
var sectionTableColumns = jQuery("#sectionsTable tr td");
相关文章:
- 得到"全局未定义“;全局变量定义清楚时出错
- 使用变量的名称,然后为该变量定义函数
- Javascript 从 php 变量定义 getElementById()
- 使用变量定义宽度和高度
- 函数内部的JavaScript全局变量定义
- Javascript变量定义-澄清
- 为多个变量定义相同的类型,在Webstorm中识别
- 如何用变量定义一个数组,然后用一个数字填充每个数组
- 画布的奇怪行为 上下文变量定义位置导致选项卡处于非活动状态时画布呈现冻结
- 为什么要显式将变量定义为未定义
- Gulp/Grunt 获取触笔工作表中的所有颜色变量,并将它们作为变量定义写入文件
- 是否可以在 Node.js 中为模块变量定义 SET 函数
- ES6 块范围的变量定义作为条件
- 使用 jQuery 获取由变量定义的文本输入的值
- :gt()选择器,为变量定义的索引
- 如何在ASP.NET中将Javascript变量定义为Session
- 带有用户输入的ajax请求变量定义有问题
- 使用ElasticSearch搜索变量定义字段
- 变量定义,不同的输出
- JavaScript变量定义和范围