jQuery的.add在一个空集上

jQuery's .add on an empty set?

本文关键字:一个 空集 add jQuery      更新时间:2023-09-26

我正在开发一个包含很多选项的插件,因此我试图跟踪一组元素并将它们放入变量中。变量不能为空(但这在这里无关紧要)。假设只有两个选项,那么变量将保存一个或两个元素作为 jQuery 对象,即 $("#el1, #el2") .我尝试了以下内容,但添加的结果仍然$([]).

var track = $([]);
someFunc() {
    if (option1) track.add("#el1");
    if (option2) track.add("#el2");
}
// result is `$([])`

请注意,我不想要一个数组,而是一个jQuery选择器,正如我在上面的例子中发布的那样。

您可以先整理出需要哪些元素/选择器。
然后使用这些来初始化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());
}

在昏迷时使用数组连接:

var elements = [];
elements.push('#one');
console.log(elements.join(','));
$(elements.join(','));

https://jsfiddle.net/8xx8x1xe/