如果另一个div有一个类,我需要隐藏一个div。
我创建了一个非常基本的示例HERE
当点击“点击”这个词时,我需要隐藏底部的div来点击。它为中间div添加了一个类很好,但似乎hasClass()
不想工作?
注意:结构需要像这样。如果单击“单击”,修改中间div(添加类?),并根据中间div操作底部div。有了这个设置 - 我不能只做“如果点击CLICK,slideUp()底部div”。
此外,一旦单击“确定”或“取消”,它将恢复,因为中间的div将不再具有该类。如果这是我可以在这里工作的方法,哈哈。
答案 0 :(得分:3)
你的if
语句不在任何函数之外,因此在加载脚本后没有理由调用它。
See this fiddle,我认为这就是你想要的。
答案 1 :(得分:3)
在旁注中,检查是否有课程的另一种变体是:
if ( $('body.className').length ) {
仍然建议使用hasClass。很高兴看到变化。
答案 2 :(得分:2)
正如其他人所说,您没有在所有点击事件处理程序上调用if
。使用if
内的语句创建自定义函数,并在所有单击处理程序上调用它。
选中此fiddle
答案 3 :(得分:1)
将类附加到DOM元素后,应正确隐藏元素。
$('.element').click(function()
{
$('.thisElement').addClass('hidepub');
if($('.thisElement').hasClass('hidepub')) {
$('.thisElement').hide();
}
});
答案 4 :(得分:1)
仅在脚本加载时调用一次。您需要确保在.click(...)
处理程序中调用它。
if($('#timestampdiv').hasClass('hidepub')) {
$('#major-publishing-actions').slideUp('slow');
}
答案 5 :(得分:0)
您可以将它们全部合并到一个函数中 - 并且您希望该检查位于单击函数
中您可以使用toggleClass并传入条件
来减少addclass removeclass$('a.edit-timestamp,a.save-timestamp,a.cancel-timestamp').click(function() {
var $tsdiv = $("#timestampdiv");
// add class showpub if edit is clicked
$tsdiv.toggleClass('showpub',$(this).hasClass('edit-timestamp'));
// add class hidepub only if it wasn't edit that was clicked
$tsdiv.toggleClass('hidepub',!$(this).hasClass('edit-timestamp'));
// then do your toggle
if ($tsdiv.hasClass('hidepub')) {
$('#major-publishing-actions').slideUp('slow');
}else{
$('#major-publishing-actions').slideDown('slow');
}
});
您可以通过交换传递给toggleClass()方法的逻辑来反转它