6

我在 html 中有这段代码:

<div class="sub-status">
    <p class="subscribed"><i class="icon-check"></i> Subscribed</p>
</div>

在悬停时,我希望将其更改为:

<div class="sub-status">
    <p class="unsubscribe"><i>X</i> Unsubscribe</p>
</div>

而且,我在 jQuery 中有这段代码:

$(document).ready(function() {
    $('.sub-status').mouseenter(function() {
        $(this).html("<p class='unsubscribe'><i>X</i> Unsubscribe</p>");
    });
    $('.sub-status').mouseleave(function() {
        $('this').html("<p class='subscribed'><i class='icon-check'></i> Subscribed</p>");
    });
});

第一个功能很好用。当我将鼠标悬停在该 div 上时,它会更改为我想要的,但是 mouseleave 不起作用。我希望当我将鼠标移出该 div 时,它的数据将恢复到以前的状态。我无法让这个工作。任何帮助,将不胜感激。

谢谢。

4

4 回答 4

5

改变

$('this')...

$(this)...

您可以使用hover()而不是使用两个单独的功能:

$('.sub-status').hover(function() {
    $(this).html("<p class='unsubscribe'><i>X</i> Unsubscribe</p>");
},function() {
    $(this).html("<p class='subscribed'><i class='icon-check'></i> Subscribed</p>");
});

更新

您的小提琴不起作用,因为您正在更新悬停元素的全部内容 - 只更新<p>应该可以工作的文本。

$('.sub-status').hover(function() {
  $(this).children('p')
              .removeClass()
              .addClass('unsubscribed')
              .html("<i>X</i> Unsubscribe");
  },function() {
     $(this).children('p')
               .removeClass()
               .addClass('subscribed')
               .html("<i class='icon-check'></i> Subscribed");
});

工作小提琴

于 2013-06-24T13:16:24.217 回答
3

来,试试这个。工作演示:http: //jsfiddle.net/XrYj4/3/

$(document).ready(function() {
    $('.sub-status').on("mouseenter", function() {
        $(this).find("p").prop("class", "unsubscribed").html("<i>X</i> Unsubscribe");
    }).on("mouseleave", function() {
        $(this).find("p").prop("class", "subscribed").html("<i class='icon-check'></i> Subscribed");
    });
});
于 2013-06-24T13:28:44.167 回答
1

尝试使用悬停功能:

$(".sub-status").hover(
  function () {
    $(this).html("<p class='unsubscribe'><i>X</i> Unsubscribe</p>");
  },
  function () {
    $(this).html("<p class='subscribed'><i class='icon-check'></i> Subscribed</p>");
  }
);

http://api.jquery.com/hover/

于 2013-06-24T13:17:04.640 回答
1

改为'this'简单this。还可以考虑链接,如下所示,这可以帮助设备较弱的用户更快地加载内容。

$(document).ready(function() {
    $('.sub-status').mouseenter(function() {
        $(this).html("<p class='unsubscribe'><i>X</i> Unsubscribe</p>");
    }).mouseleave(function() {
        $(this).html("<p class='subscribed'><i class='icon-check'></i> Subscribed</p>");
    });
});
于 2013-06-24T13:17:54.607 回答