我需要根据3个元素是否有类来在条件语句中运行一个函数。
简而言之,如果(elm1,elm2,elm3)有类"包括"然后响了。但是所有3个元素都必须具有该类,如果只有2个或1个具有该类,则它不能成立。
<div class="elm1" class="include"></div>
<div class="elm2" class="include"></div>
<div class="elm3" class="include"></div>
jQuery('#search-submit').click(function() {
if (#elm1, #elm2, #elm3).hasClass('include'){
/* return true */
} else {
/* return false */
}
}
毋庸置疑,这不起作用。
答案 0 :(得分:1)
您的标记不正确,请id="elm1"
而非class="elm1"
(对于所有三个元素)。还有一些语法错误,如
1. jQuery('#search-submit')
- 此区块必须以});
为结尾
2.将您的选择器放在引号内,在您的情况下if (#elm1, #elm2, #elm3)
3.如果条件必须在()
内
你可以拥有所有元素的id数组并迭代它以知道元素是否具有类并相应地设置标志。
var elements = ['#elm1', '#elm2', '#elm3'];
jQuery('#search-submit').click(function() {
var result = true;
//iterate all elements ids
jQuery.each(elements, function(i, v){
//set result false if element don't have class
if(!jQuery(v).hasClass('include'))
result = false;
});
//show final result
alert(result);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="elm1" class="include"></div>
<div id="elm2" class="include"></div>
<div id="elm3" class="include"></div>
<input id="search-submit" type="button" value="Click me">
答案 1 :(得分:1)
您可以执行类似
的操作<div class="elm1 include"></div>
<div class="elm2 include"></div>
<div class="elm3 include"></div>
var classNotFound = false;
$('.elm1, .elm2, .elm3').each(function() {
if (!$(this).hasClass('include')){
classNotFound = true;
}
});
return classNotFound;
答案 2 :(得分:0)
你必须更正你的标记,因为你不能在一个元素中有多个相同的属性(正如Jai注意到的那样......):
library(data.table)
setDT(df)[, CRIT := cumsum(THR < 19)]
df[THR >= 19, GRP := cumsum(c(0L, diff(CRIT)) != 0L) + 1L]
# THR CRIT GRP
# 1: 13 1 NA
# 2: 17 2 NA
# 3: 19 2 1
# 4: 22 2 1
# 5: 21 2 1
# 6: 19 2 1
# 7: 17 3 NA
# 8: 12 4 NA
# 9: 12 5 NA
# 10: 17 6 NA
# 11: 20 6 2
# 12: 20 6 2
# 13: 20 6 2
# 14: 17 7 NA
# 15: 17 8 NA
# 16: 13 9 NA
# 17: 20 9 3
# 18: 20 9 3
# 19: 17 10 NA
# 20: 13 11 NA
一旦你这样做,你可以使用组合选择器,并检查你的长度:
<div class="elm1 include"></div>
<div class="elm2 include"></div>
<div class="elm3 include"></div>
答案 3 :(得分:0)
毋庸置疑,这不起作用。
当然!
为什么:
由于多个class
属性。如果发生这种情况,则会忽略一个,而是可以执行此操作:
<div class="elm1 include"></div>
<div class="elm2 include"></div>
<div class="elm3 include"></div>
并且在js中你有一个id
的选择器,它不是每个标记。我的建议是使用.filter()
方法根据您要检查的班级过滤div,然后您可以从.filter()
返回,然后您可以根据需要开展工作。
所以这可以做到:
jQuery('#search-submit').click(function() {
jQuery('div').filter(function(e, elem) {
return !jQuery(this).hasClass('include');
}).addClass('exclude');
// just a demo:
$('div').html(function(){
this.innerHTML = '<pre>'+ this.classList +'</pre>'
});
});
.include {
color: green;
}
.exclude {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="elm1 include">inclue</div>
<div class="elm2">!include</div>
<div class="elm3 include">include</div>
<br>
<button id="search-submit">Submit</button>
答案 4 :(得分:0)
请注意,您使用了class
属性而不是id
,依此类推其他内容:
<div class="elm1" class="include"></div>
我认为你的JS代码倾向于使用id而不是class
if (#elm1, #elm2, #elm3)
带有ID的示例工作代码:
$(function() {
var inc = $('div.include[id^=elm]').length;
var all = $('div[id^=elm]').length;
alert(all === inc);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="elm1" class="include"></div>
<div id="elm2" class="include"></div>
<div id="elm3" class="include"></div>
使用类:
示例工作代码
$(function() {
var inc = $('div.include[class^=elm]').length;
var all = $('div[class^=elm]').length;
alert(all === inc);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="include elm1"></div>
<div class="include elm2"></div>
<div class="include elm3"></div>