jQuery 的 .add 在一个空集上?
jQuery's .add on an empty set?
我正在开发一个有很多选项的插件,因此我试图跟踪一组元素并将它们放在一个变量中。该变量不能为空(但这与此处无关)。假设只有两个选项,那么变量将保存一个或两个元素作为 jQuery 对象,即 $("#el1, #el2")
。我尝试了以下,但添加的结果仍然是 $([])
.
var track = $([]);
someFunc() {
if (option1) track.add("#el1");
if (option2) track.add("#el2");
}
// result is `$([])`
请注意,我不想要数组,而是我在上面示例中发布的 jQuery 选择器。
在昏迷时使用数组连接:
var elements = [];
elements.push('#one');
console.log(elements.join(','));
$(elements.join(','));
你可以先弄清楚你需要哪个elements/selectors。
然后使用这些来初始化 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());
}
我正在开发一个有很多选项的插件,因此我试图跟踪一组元素并将它们放在一个变量中。该变量不能为空(但这与此处无关)。假设只有两个选项,那么变量将保存一个或两个元素作为 jQuery 对象,即 $("#el1, #el2")
。我尝试了以下,但添加的结果仍然是 $([])
.
var track = $([]);
someFunc() {
if (option1) track.add("#el1");
if (option2) track.add("#el2");
}
// result is `$([])`
请注意,我不想要数组,而是我在上面示例中发布的 jQuery 选择器。
在昏迷时使用数组连接:
var elements = [];
elements.push('#one');
console.log(elements.join(','));
$(elements.join(','));
你可以先弄清楚你需要哪个elements/selectors。
然后使用这些来初始化 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());
}