向非函数添加变量和选择器的正确方法 - jquery

Correct way to add variable and selectors to a not function - jquery

我检查了一些关于 SO 的答案,我认为我的语法是正确的,但有些地方不正确。

我正在尝试创建一个 jquery 选择器与变量混合的数组,并将它们存储在 not() 函数中。

我要演示这个 fiddle

函数的第二行不起作用:

var trigger = $('mainNav li:eq(0) a');
var headerLinks = $('#header a').not('.control a', + trigger);

我的第一个想法是 #header a 在 css 方面比 .control a 更优先。但是更改 类 和 ID 似乎不起作用。

同样,我的代码中还有一个更简单的变量:

var content = $('.content');
var added = $('.extraList', + content);

在控制台中 added 仅返回 extraList 选择器。

1 not 函数的工作方式是否与其他 jquery 选择器不同?我希望看到在控制台

中筛选的所有选定元素的数组 and/or

2 有没有办法将变量和选择器存储在标准数组中并调用它?我不知道这看起来如何完全符合 jquery 需要解释它,但像这样:

var arr = ['.control a', headerLinks, content, '.post'];

我知道这是混合类型,但我不确定如何将 jquery 变量和选择器传递到同一个数组中(如果可能的话)。

代码var headerLinks = $('#header a').not('.control a', + trigger);

你可以简单地使用 chain like

var headerLinks = $('#header a').not('.control a').not(trigger);

var trigger = $('.control a, #mainNav li:eq(0) a'); //I am using here #mainNav
var headerLinks = $('#header a').not(trigger);

对于var added = $('.extraList', + content);

您可以使用.add()

Create a new jQuery object with elements added to the set of matched elements.

var added = $('.extraList').add(content);

感谢@Satpal。您的回答肯定对我有帮助,但这就是我所做的。

存储一个 jquery 选择器数组,以便以后从函数中排除,我可以继续添加或编辑这个变量。 (我认为这更简洁,因为它更多地分离了代码并且绕过了 parent/child 问题):

var exclude = $('#mainNav li:eq(0) a, .control a, .social-links a');

创建另一组链接以包含在函数中:

var headerLinks = $('#header a');
var contentLinks = $('.post a');

合并将用于触发函数的选择器并添加排除的选择器:

var merge = $.merge(headerLinks, contentLinks).not(exclude);

现在点击功能:

merge.on('click',function(){});

应该触发我想要的链接,而不是我不需要的链接。

我仍然想知道如何在标准 javascript 数组中存储 jquery 选择器和变量的数组。

已更新 fiddle:http://jsfiddle.net/lharby/gk7bmzqh/1/