6

如果另一个 div 有一个类,我需要隐藏一个 div。

我在这里创建了一个非常基本的示例

当“点击”这个词被点击时,我需要隐藏底部的 div。它在中间 div 中添加了一个类就好了,但似乎hasClass()不想工作?

注意:结构需要是这样的。如果点击“click”,修改中间的div(添加类?),根据中间的div来操作底部的div。使用此设置 - 我不能只执行“如果单击 CLICK,则 slideUp() 底部 div”。

此外,一旦单击“确定”或“取消”,它将恢复,因为中间 div 将不再具有该类。如果这是我可以在这里工作的方法,哈哈。

4

6 回答 6

5

在旁注中,检查是否有类的另一个变体是:

if ( $('body.className').length ) {

不过还是推荐 hasClass。有时很高兴看到变化。

于 2014-06-26T15:55:48.767 回答
4

您的if语句在任何函数之外,因此在加载脚本后没有理由调用它。

看到这个小提琴,我想这就是你想要的。

于 2012-10-26T20:06:51.700 回答
2

这只会在脚本加载时被调用一次。您需要确保它在您的.click(...)处理程序中被调用。

if($('#timestampdiv').hasClass('hidepub')) {
    $('#major-publishing-actions').slideUp('slow');
}
于 2012-10-26T20:03:29.590 回答
2

正如其他人所提到的,您没有调用if所有单击事件处理程序。创建一个带有内部语句的自定义函数,if并在所有点击处理程序上调用它。

检查这个小提琴

于 2012-10-26T20:17:53.597 回答
1

将类附加到 DOM 元素后,这应该会正确隐藏该元素。

$('.element').click(function()
{
    $('.thisElement').addClass('hidepub');
    if($('.thisElement').hasClass('hidepub')) {
         $('.thisElement').hide();
    }
});
于 2012-10-26T20:02:15.257 回答
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');
    }
});

http://jsfiddle.net/JPcge/

您可以通过交换传递给 toggleClass() 方法的逻辑来反转它

于 2012-10-26T20:16:34.803 回答