2017-03-23 32 views
1

它会将每个日志的false打印到控制台。单击导航链接并取消按钮时,切换工作正常。我看过this question,并尝试了所有建议,但仍遇到同样的问题。hasClass()始终返回false(jquery),即使在切换时也是如此

// add new photo toggle 
 
$('#click_new_photo a').click(function() { 
 
    console.log($(".content").hasClass('show-new-photo')); 
 
    $(".content").find(".new-photo").toggleClass('show-new-photo'); 
 
    console.log($(".content").hasClass('show-new-photo')); 
 
}); 
 

 
$("#cancel_add_new_photo").click(function() { 
 
    console.log($(".content").hasClass('show-new-photo')); 
 
    $(".new-photo").toggleClass("show-new-photo"); 
 
    console.log($(".content").hasClass('show-new-photo')); 
 
});
.new-photo { 
 
    width: 300px; 
 
    height: 200px; 
 
    border-radius: 5px; 
 
    background: #34609d; 
 
    box-shadow: 1px 1px #d6d6d6; 
 
    position: fixed; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
    -ms-transform: translate(-50%, -50%); 
 
    z-index: 100; 
 
    transition: opacity 0.5s ease; 
 
    opacity: 0; 
 
} 
 

 
.show-new-photo { 
 
    opacity: 1; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
    <nav> 
 
    <ul> 
 
     <li id="click_new_photo"><a href="#">New Photo</a></li> 
 
    </ul> 
 
    </nav> 
 
    <div class="content"> 
 
    <div class="new-photo"> 
 
     <button id="cancel_add_new_photo">Cancel</button> 
 
    </div> 
 
    ... 
 
    </div> 
 
    ... 
 
</body>

+0

在您的演示没有课''秀 - 新photo''内容 – guradio

+0

也选择‘内容’相当距离‘内容’明显不同 – Pointy

回答

2

hasClass方法不适用于子节点。

您可以使用类似的东西

return $(".content").find('.show-new-photo').length > 0; 
1

尝试

console.log($(".content").hasClass('show-new-photo')); 

我相信这应该通过添加类的工作 “”在您选择

+0

感谢您的回复!它仍然显示全部虚假,即使有变化 – stumped

+0

我通常会尝试使用id这样的东西。我已经在我的测试结束,我相信它应该工作。您可以尝试使用id属性并将您的代码切换到此处:console.log($(“#contentID”)。hasClass('show-new-photo')); –

2

我相信

$(".content").find(".new-photo").toggleClass('show-new-photo'); 

只有切换“新-照片”元素“显示,新照片”类,而不是“内容”元素。

除非我失去了一些东西

console.log($("content").hasClass('show-new-photo')); 

会出来把同样的事情,无论是之前还是之后

$(".content").find(".new-photo").toggleClass('show-new-photo'); 

,因为该行代码不会改变与否$(”。内容“)具有类”show-new-photo“或不是。

另外它应该是$(“。content”),而不是$(“content”)。

+0

无论如何,如果这种方式有缺陷,我可以测试'show-new-photo'是否在屏幕上? – stumped

+0

@stumped不完全确定你的意思。你想测试DOM中的任何元素是否具有类“show-new-photo” –

相关问题