[英]jQuery add class if it exists elsewhere
我剛剛編寫了以下代碼,將一個類添加到匹配的外部div。 現在,我知道必須有一種更優雅的方法來實現以下目標!
if ($(".cur").hasClass("one")) { $("#outer").addClass("one"); }
if ($(".cur").hasClass("two")) { $("#outer").addClass("two"); }
if ($(".cur").hasClass("three")) { $("#outer").addClass("three"); }
if ($(".cur").hasClass("four")) { $("#outer").addClass("four"); }
if ($(".cur").hasClass("five")) { $("#outer").addClass("five"); }
if ($(".cur").hasClass("six")) { $("#outer").addClass("six"); }
任何改進將很高興收到:)
var classNames = '';
$('.cur').each(function(){
if (classNames.indexOf(this.className + ' ') === -1)
classNames += this.className + ' ';
});
var classes = classNames.split(" ");
var $outer = $('#outer');
$.each(classes, function(index, value){
if (value !== 'cur')
$outer.addClass(value);
});
筆記:
.cur
類,它是自動完成的。 .cur
所有類( cur
本身除外),因此由您決定是否對您有利。 您可以使用regEx找到匹配的類,然后將匹配的類添加到#outer。 見下文,
$(function () {
var regClasses = /(one|two|three|four|five|six)/g;
var $cur = $('.cur'),
$outer = $('#outer');
$cur.each(function () {
$outer.addClass(this.className.match(regClasses).join(' '));
});
});
這個怎么樣:
var classes = ['one', 'two', 'three'],
$cur = $('.cur'),
$outer = $("#outer");
$.each(classes, function(i, v) {
if ($cur.hasClass(v)) $outer.addClass(v);
})
或迭代可以實現為純js,例如:
for (var i in classes) {
var v = classes[i];
....
}
或(更好) for
代替:
var len = classes.length;
for (var i = 0; i < len; i++) {
var v = classes[i];
}
這應該更快,因為它不會在每次迭代中都調用.hasClass
:
// define which classes you want to match
match_classes = ["one", "two", "three", "four"];
// grab all the classes on the inner element
elm_classes = $(".cur").attr("class").split(" ");
// cache the outer element for quick access
$outer = $("#outer");
// iterate over the list of classes you want to match
$.each(match_classes, function(i, val){
// if one of those classes exists on inner, add it to outer
if(elm_classes.indexOf(val) > -1) $outer.addClass(val);
});
var classes = ['one', 'two', 'three', 'four', 'five', 'six'];
$.each(classes, function(key, value){
if($('.cur').hasClass(value)) $('.cur').closest('div').addClass(value);
});
應該可以解決這個問題,它使用closest('div')獲取外部div。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.