如何使用Jquery为每个类应用条件

时间:2014-05-15 13:22:23

标签: javascript jquery

我有几个类需要使用jQuery编辑,遗憾的是我无法用一个语句编辑,我希望有些可以帮助我如何使用.Each函数或循环我可以应用它整个班级。

if ($(".A").hasClass("B")) {
$("<span id=\"Dummytext\">Condition 1</span>").insertAfter($(".N"));
} else if($(".A").hasClass("C")) {
$("<span id=\"Dummytext\">Condition 2</span>").insertAfter($(".N"));
} else {
$("<span id=\"Dummytext\">Condition 2</span>").insertAfter($(".N"));  
}                 

2 个答案:

答案 0 :(得分:1)

利用.each()

$(".A").each(function () {
  if ($(this).hasClass("B")) {
    $("<span id=\"Dummytext\">Condition 1</span>").insertAfter($(".N"));
  } else if ($(this).hasClass("C")) {
    $("<span id=\"Dummytext\">Condition 2</span>").insertAfter($(".N"));
  } else {
    $("<span id=\"Dummytext\">Condition 2</span>").insertAfter($(".N"));
  }
});

这将检查文档中包含类A的每个元素。

答案 1 :(得分:0)

试试这段代码:(如this fiddle所示) (提示:$(this).each(...)是关键点)

jQuery.fn.extend({
    myDecide: function (classYes, ClassNo, selectorAfter, TextYes, TextNo, TextDefault, closestSelector) {
        $(this).each(function() {
            var after = $(this).closest(closestSelector).find(selectorAfter)
            console.log($(this))
            if ($(this).hasClass(classYes)) {
                $(TextYes).insertAfter($(after));
            } else if ($(this).hasClass(ClassNo)) {
                $(TextNo).insertAfter($(after));
            } else {
                ($(TextDefault).insertAfter($(after)));
            }
        });
    }
})



jQuery(".infoModule").myDecide(
    'inStock',
    'notInStock',
    ".ui-priceselector",
    $("<span id=\"messageinstock2\">Condition 1</span>"),
    $("<span id=\"messageinstock2\">Condition 2</span>"),
    $("<span id=\"messageinstock2\">Condition 3</span>"),
    '.searchrow-price'
  );

修改

为什么你的代码不起作用?

  1. $(".A")计算每个具有类A的元素,但hasClass函数仅适用于jQuery选择的第一个对象
  2. 使用$().each你可以帮助1.然后你面临另一个问题。您始终将文本附加到每个$(".N")。你必须找到与.N相对的.A。这是closest().find()部分。
  3. 此外,为方便起见,我将其打包成jQuery函数。