Jquery - 如果条件为true,则循环选择器并执行某些操作

时间:2015-03-11 02:44:02

标签: javascript jquery

我正试图让这段代码起作用:

HTML:

<div class="content-block blog-post clearfix zoomIn animated" style="position: absolute; left: 0px; top: 0px;">
<div class="content-block blog-post clearfix zoomIn animated" style="position: absolute; left: 451px; top: 0px;">
<div class="content-block blog-post clearfix zoomIn animated" style="position: absolute; left: 0px; top: 466px;">
<div class="content-block blog-post clearfix zoomIn animated" style="position: absolute; left: 451px; top: 476px;">

Jquery的:

var a = $(".category-susans-personal-blog .archive_page .wpb_thumbnails .blog-post").css("position") == "absolute" && $(".category-susans-personal-blog .archive_page .wpb_thumbnails .blog-post").css("left") == "0px";
var b = true;
var c = a && b;

    $(".category-susans-personal-blog .archive_page .wpb_thumbnails .blog-post").each(function(i, obj) {
    if(c){
        $(this).addClass("left");
    } else {
        $(this).addClass("right");
    }
});

我要做的是:如果.blog-postposition:absolute;left:0,请添加课程.left其他.right

以下是当前javascript的html输出:

<div class="content-block blog-post clearfix zoomIn animated left" style="position: absolute; left: 0px; top: 0px;">
<div class="content-block blog-post clearfix zoomIn animated left" style="position: absolute; left: 451px; top: 0px;">

谢谢!

3 个答案:

答案 0 :(得分:2)

你不能用这种方式“添加”布尔值:

$c = $a + $b;

你所做的只是强制整数。由于$b 总是为真,您将会执行$c = 0 + 1$c = 1 + 1,但无论哪种方式,结果都是$c是一个 truthy 值。

您需要使用布尔逻辑运算符,例如&&||。如果你想说“两个AND b必须为真”,你需要&&

$c = $a && $b;

答案 1 :(得分:0)

添加两个true / false并不会给你真或假,它会给你一个数字:

True + true = 2
True + false = 1
False + false = 0

此外,您需要移动each()中的第一行:

    $(".category-susans-personal-blog .archive_page .wpb_thumbnails .blog-post").each(function(i, obj) {
var $a = $(this).css("position") == "absolute" && $(this).css("left") == "0px";
    if($a){
        $(this).addClass("right");
        } else {
        $(this).addClass("left");
    }
    });

Demo

答案 2 :(得分:0)

仍然不确定你要完成什么,但这可能是正确方向的推动(如果你只想要position: absoluteleft: 0px的div来获得{{1} } class):

right

可以简化为:

$(".category-susans-personal-blog .archive_page .wpb_thumbnails .blog-post").each(function(i, obj) {
  var a = $(this).css("position") === "absolute" && $(this).css("left") === "0px";
  var b = true;
  var c = a && b;

  if(c) {
    $(this).addClass("right");
  } else {
    $(this).addClass("left");
  }
});

<强>更新

在您进行修改后,您声明只需要$(".category-susans-personal-blog .archive_page .wpb_thumbnails .blog-post").each(function(i, obj) { if($(this).css("position") === "absolute" && $(this).css("left") === "0px") { $(this).addClass("right"); } else { $(this).addClass("left"); } }); .blog-post position: absolute left: 0px添加left类。

然后这样的事情应该更充分:

$(".blog-post").each(function(i, obj) {
  if($(this).css("position") === "absolute" && $(this).css("left") === "0px") {
    $(this).addClass("left");
  } else {
    $(this).addClass("right");
  }
});