jQuery:如果字段hasClass,则计算其他字段中的单词

时间:2015-01-16 09:10:06

标签: javascript jquery

我正在尝试编写一个函数来检查.toggle是否有.active,然后它会计算.hidden中的字数并将margin-bottom添加到{{1}因此。

这不起作用:

.portrait-wrapper

任何指导都将不胜感激。

0

6 个答案:

答案 0 :(得分:4)

hasClass返回一个布尔值,因此您需要在if语句中使用它。另外,当您找到课程时,请不要使用.符号

if($( ".toggle" ).hasClass( 'active')){
    var n = $(".hidden").text().split(" ").length;
    if (n > 1400) {
        $(".portrait-wrapper").css("margin-bottom", "500px");
    } 
    else {
        $(".portrait-wrapper").css("margin-bottom", "100px");
    }
}

答案 1 :(得分:1)

不要使用"。" " hasClass"中的类选择器功能。它已经很重要了:

http://api.jquery.com/hasclass/

if ($( ".toggle" ).hasClass('active')) {
}

答案 2 :(得分:1)

正如我在评论中发表的那样,有两个问题:

结果如下:

$('.toggle').click(function() {
    if($(".toggle").hasClass('active')) {
        var n = $(".hidden").text().trim().split(" ").length;
        if (n > 1400) {
            $(".portrait-wrapper").css("margin-bottom", "500px");
        } 
        else {
            $(".portrait-wrapper").css("margin-bottom", "100px");
        }
    }
});

详细说明:在您的示例中,您使用$(".hidden").length。这将返回".hidden"匹配的元素数,但与该字段的内容无关。

答案 3 :(得分:0)

使用hasClass函数时,不应使用. - 表示法。 请参阅:hasClass docs

答案 4 :(得分:0)

.hasClass(className)

方法不会将function作为第二个参数。 正如doc所说:

  

.hasClass(className)   班级名称   类型:字符串   要搜索的类名。

做类似的事情:

$(".toggle").click(function(){
   $(this).hasClass("active") && doTheTrick(); 
   //same as if($(this).hasClass("active)) doTheTrick()
})

function doTheTrick(){
  var n = $(".hidden").text().trim().split(" ").length;
  var margin = n > 1400 ? "500px" : "100px";
  $(".portrait-wrapper").css("margin-bottom", margin)

}); 

答案 5 :(得分:-2)

你错误地使用了.hasClass函数 也许应该是这样的

$(function(){
    $('.toggle').click(function(){
        if ($( ".toggle" ).hasClass('active'))
        {
            var n = $(".hidden").length;
            if (n > 1400) {
                $(".portrait-wrapper").css("margin-bottom", "500px");
            } 
            else {
                $(".portrait-wrapper").css("margin-bottom", "100px");
            }

        };
    });
});