【问题标题】:jQuery If Div Does NOT ExistjQuery 如果 div 不存在
【发布时间】:2009-02-06 14:32:55
【问题描述】:

我有 3 张图像并具有一个功能,以便在鼠标悬停时它们淡入淡出。如果正在翻转的图像具有“已选择”类,我不想这样做。

到目前为止,我有这个代码:

$(".thumbs").hover(function(){

if (!($(this).hasClass(".selected")){

$(this).stop().fadeTo("normal", 1.0);
},function(){
$(this).stop().fadeTo("slow", 0.3);

}

});

在我看来,IF 语句应该是:

if (!($(this).hasClass(".selected"))){

但两者都不起作用所以谁知道呢。当我实现此代码时,我的整个 javascript 停止工作,有什么想法吗?

Google 上几乎没有关于 jQuery 的 IF 语句的信息,这太荒谬了。我将非常感谢任何帮助!

【问题讨论】:

标签: jquery


【解决方案1】:

问题是您的元素具有“selected”类而不是“.selected”类。删除点。

【讨论】:

  • jQuery 对其选择器使用类似 CSS 的表示法……点表示它是一个类。
  • @Ben: $(".selected") 是正确的,但 OP 想要 hasClass("selected")。注意第一个是选择器,第二个不是。
  • 当人们学习 jQuery 而不是 JS 时会发生这种情况:(
【解决方案2】:

The jQuery docs on selectors 告诉你你需要知道的一切。

$('.thumbs:not(.selected)').hover(function(){
  // ...
})

【讨论】:

  • 我认为如果所选项目发生更改,这将不起作用(假设您在 $(document).ready 中调用了它)
  • 我同意,如果在页面加载后应用了所选类,则如果在文档就绪中调用此方法将不起作用。
【解决方案3】:

使用not函数:

if ($(this).not(".selected")) {
    ...
}

【讨论】:

    【解决方案4】:

    应该是这样的

    if (!($(this).hasClass("selected"))){
    

    没有。因为它知道你在寻找一个类名。

    【讨论】:

      【解决方案5】:

      我认为你的 javascript 格式不正确——大括号放在错误的位置——你不应该在 hasClass 函数中使用点。更好的格式也有助于提高可读性。

      $(document).ready( function() {
          $('.thumbs').hover( function() {
                                  if (!$(this).hasClass('selected')) {
                                      $(this).stop().fadeTo("normal", 1.0);
                                  }
                              },
                              function() {
                                  $(this).stop().fadeTo("slow", 0.3);
                              }
                       );
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-03
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 2021-01-20
        • 2019-07-16
        相关资源
        最近更新 更多