jquery - 如何在嵌套的 jQuery 函数中更改 css

标签 jquery css dhtml

我正在尝试创建一个元素,当鼠标悬停在其上时,它的图像会发生变化,并且它的位置也会相应地进行调整。然而图像在改变,但 css 位置没有改变。

jQuery/JavaScript:

        var newComment = $('<span>').attr({'id': commentCount}); 
        newComment
            .addClass('comment')  
            .css({
                'top': (yOffset * 100) + 175 + "px",
                'left': (xOffset * 75) + 40 + "px"
            })

            .hover(function(){ //Hover over the comment                       
                newComment

                .removeClass()
                .addClass('commentOver')
                .offset({
                    'top': yOffsets[newComment.id] + 175 - 1250 + "px",
                    'left': xOffsets[newComment.id] + 40 - 1500 + "px"
                });

            },function(){ //Mouse leaves the comment               
                newComment    

                .removeClass()
                .addClass('comment')
                .offset({
                    'top': yOffsets[newComment.id] + 1750 + "px",
                    'left': xOffsets[newComment.id] + 400 + "px" 
                });                      
            });      

CSS:

.comment{
    position: absolute;
    z-index: 10;
    padding: 0px;
    width: 51px;
    height: 70px;
    background-image: url('../img/dropSmall.png');
    font-weight:800;
}

你能看出我哪里错了吗?为什么?

最佳答案

是否已将新的评论范围添加到文档中?

由于我们没有您的其余 HTML/CSS/代码,我不知道这些是否是唯一的问题,但我建议使用 $(this) 并在 removeClass() 中传递一个参数:

    var newComment = $('<span>').attr({'id': commentCount}); 
    newComment
        .addClass('comment')  
        .css({
            'top': (yOffset * 100) + 175 + "px",
            'left': (xOffset * 75) + 40 + "px"
        })

        .hover(function(){ //Hover over the comment                       
            $(this)
            .removeClass("comment")
            .addClass('commentOver')
            .offset({
                'top': yOffsets[newComment.id] + 175 - 1250,
                'left': xOffsets[newComment.id] + 40 - 1500
            });

        },function(){ //Mouse leaves the comment               
            $(this)
            .removeClass("commentOver")
            .addClass('comment')
            .offset({
                'top': yOffsets[newComment.id] + 1750,
                'left': xOffsets[newComment.id] + 400" 
            });                      
        });   

我在 jQuery 文档中没有看到您可以在不传递任何参数的情况下调用 removeClass()。它说您需要一个或多个类(class)。

此外,如果单位是 px,offset() 方法不需要单位。

您可能还想看看 toggleClass("a", "b") ,这使得交换两个类变得容易。

关于jquery - 如何在嵌套的 jQuery 函数中更改 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6974721/

相关文章:

javascript - 自动更新 HTML Canvas 宽度和高度属性

css - 我希望 .tabcontent 在 0.3 秒内从 0 中心显示为全尺寸动画

css - 如何防止 Safari css 关键帧动画闪烁?

javascript - 图像可以包含在网页中但不能复制/保存吗?

javascript - 选择一个 div (jQuery)

javascript - 在 api 上进行 jquery ajax 请求时出现 CORS 错误

jQuery 动画 div 到每个 Angular 以跳跃动画和 'fixed' 元素结束

html - 在输入字段中进行 Tab 键切换时,底部的固定栏显示在我 Tab 键切换到的字段顶部

html - 使 div 小于其内容

javascript - <p> 标签或 <span> 标签中网页上的任何文本都可以通过编程方式选择吗?