我正在开发一个有很多选项的插件,因此我试图跟踪一组元素并将它们放在一个变量中。变量不能为空(但这里不用担心)。假设只有两个选项,那么变量将把一个或两个元素作为jQuery对象,即$("#el1, #el2")
。我尝试了以下操作,但添加的结果仍为$([])
。
var track = $([]);
someFunc() {
if (option1) track.add("#el1");
if (option2) track.add("#el2");
}
// result is `$([])`
请注意,我不想要一个数组,但是我在上面的例子中发布了一个jQuery选择器。
答案 0 :(得分:0)
在昏迷中使用数组连接:
var elements = [];
elements.push('#one');
console.log(elements.join(','));
$(elements.join(','));
答案 1 :(得分:0)
您可以先找出您需要的元素/选择器
然后使用这些来初始化track
变量,并使用传递所有相关选择器的jQuery对象。
var track = someFunc();
// you would have to check the length of `track` first as it may be only an empty array (length == 0) and no real jQuery object
if (track.length) {
//...
}
// returns a jQuery object with all the matched elements
// or an empty array if there is no relevant selector
function someFunc() {
// place to store the selectors
var selectors = [];
// store the relevant selectors in <selectors>
if (option1) selectors.push("#el1");
if (option2) selectors.push("#el2");
// if there is at least one selector in <selectors>
if (selectors.length > 0) {
// create a jQuery object of them and return it
return $(selectors.join())
} else {
// otherwise we return an empty array
// this allows us to use .length in both cases
return [];
}
// or always return a jQuery object
// return $(selectors.join());
}