是否可以根据互斥数据属性选择元素,例如:我希望.show()
数据属性为div
的任何country="united-kingdom"
以及type="partner"
或"director"
?类似的东西:
$('.post[data-country="united-kingdom"]&[data-type="partner,director"]').show();
或
$('.post[data-country="united-kingdom"]&[data-type="partner"]or[data-type="director"]').show();
答案 0 :(得分:0)
您可以添加以逗号分隔的多个选择器
$('.post[data-country="united-kingdom"][data-type="artist"], .post[data-country="united-kingdom"][data-type="partner"]').show();
或使用带选择器的过滤器
$('.post[data-country="united-kingdom"]').filter('[data-type="artist"], [data-type="partner"]').show();
或带回调的过滤器
var countries = ["united-kingdom", "india", "france"],
types = ["artist", "partner"];
$('.post').filter(function() {
return types.indexOf( $(this).data('type') ) !== -1 &&
contries.indexOf( $(this).data('coutry') ) !== -1;
}).show()
答案 1 :(得分:0)
我想.show()任何数据属性为country =“united-kingdom”的div,还有type =“partner”或“director”?
然后你需要一个selector group:
#include <iostream>
int a=5;
std::reference_wrapper<int> b=a;
int main() {
std::cout<<b<<std::endl;
}
说:匹配
的任何元素上课let parameters = [String: String]()
[...]
self.manager.upload(
multipartFormData: { multipartFormData in
for (key, value) in parameters {
multipartFormData.append(value.data(using: .utf8)!, withName: key)
}
multipartFormData.append(imageData, withName: "user", fileName: "user.jpg", mimeType: "image/jpeg")
},
to: path,
[...]
,$('.post[data-country="united-kingdom"][data-type="partner"], .post[data-country="united-kingdom"][data-type="director"]').show();
设为post
,data-country
设为united-kingdom
或
上课data-type
,partner
设为post
,data-country
设为united-kingdom
“或”部分来自data-type
,这使得它成为选择器组而不是单个选择器。
在评论中,你说过:
用户可能会选择每个分类术语中的十个或更多,这需要生成此条件的排列量。
在这种情况下,您最好使用director
:
,
然后
filter
在ES2016或更高版本中,您可以使用Array#includes
- 它为您提供一个简单的布尔值 - 而不是var countries = ["united-kingdom"]; // This would be created from inputs
var types = ["partner", "director"]; // This too
,您需要检查-1;你可以在ES2015及更早版本中使用polyfill ......:
var results = $(".post[data-country][data-type]").filter(function() {
var $this = $(this);
return countries.indexOf($this.attr("data-country") != -1 &&
types.indexOf($this.attr("data-type") != -1;
});
甚至可以采取进一步措施:
Array#indexOf
然后
var results = $(".post[data-country][data-type]").filter(function() {
var $this = $(this);
return countries.includes($this.attr("data-country") &&
types.includes($this.attr("data-type");
});
只要我们考虑ES2015和ES2016:
var criteria = {};
// From inputs, ...
criteria["country"] = ["united-kingdom"];
criteria["type"] = ["parter", "director"];
或者如果你真的想发疯:
var keys = Object.keys(criteria);
var selector= ".post" + keys.map(function(key) {
return "[data-" + key + "]";
}).join();
var results = $(selector).filter(function() {
var $this = $(this);
return keys.every(function(key) {
return criteria[key].includes($this.attr("data-" + key));
});
});