jQuery .each()方法在Firefox中不起作用

rob*_*bby 6 each firefox jquery

我有一个方法,我正在利用它来启动<td>与其相关的工具提示.在IE,Chrome,Safari中,一切都运行良好,但Firefox完全缺少每种方法,并且只启动DOM中的最后一个工具提示.

是什么赋予了?

http://jsfiddle.net/yus5b/

HTML:

<div class="stage">
    <div class="dealFinder">
      <h2 class="title">Deal Finder in Your Area</h2>
      <table cellpadding="5">
          <tr>
          <td class="text">
              <p class="makeModel"><a href="#">2012 Land Rover Range Rover Evoque</a><br>in Oak Lawn</p>
            <a class="youSave" href="#" onclick="return false"> You Save at Least $14,810</a>
            <div class="tooltip">
              <div class="inner">
                <b>2012 Land Rover Range Rover Evoque</b>
                <span>Your Price $19,330</span>
                <p>The National Average is <b>$21,500</b></p>
              </div>
            </div>
          </td>
            <td class="pic">
              <a href="#"><img src="http://placehold.it/113x75" /></a>
          </td>
        </tr>
        <tr>
          <td class="text">
            <p class="makeModel"><a href="#">2012 Land Rover Range Rover Evoque</a><br>in Oak Lawn</p>
            <a class="youSave" href="#" onclick="return false"> You Save at Least $14,810</a>
            <div class="tooltip">
              <div class="inner">
                <b>2012 Land Rover Range Rover Evoque</b>
                <span><small>Your Price</small> $19,330</span>
                <p>The National Average is <b>$21,500</b></p>
              </div>
            </div>
          </td>
          <td class="pic">
            <a href="#"><img src="http://placehold.it/113x75" /></a>
          </td>
        </tr>
      </table>
    </div><!-- .dealFinder -->
</div>?
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$(document).ready(function() {
    // Tooltip
    $('.tooltip').hide();
    $('.text').each(function(e) {
      var self = this;
      var tooltip = $(self).find('.tooltip');
      var youSave = $(self).find('.youSave');
      $(youSave).mouseenter(function(e) {
        $(self).find(tooltip).fadeIn("slow");
      });
      $(youSave).mouseleave(function(e) {
        $(self).find(tooltip).fadeOut("fast");
      });
    });
});?
Run Code Online (Sandbox Code Playgroud)

小智 1

首先它写得很奇怪。尝试 :

$('.text .youSave').mouseenter(function(){
   var item = $(this);
   var tooltip = $('.tooltip', item.parent()).fadeIn();
});

//the same way for mouseleave
Run Code Online (Sandbox Code Playgroud)

并给出工具提示显示:默认情况下没有为什么用js更改它?

我看到了问题所在。工具提示淡入鼠标所在位置并触发事件 mouseleave。易于修复。工具提示必须是 .youSave 元素子元素:

   <a class="youSave" href="#" onclick="return false"><span> You Save at Least $14,810<span>
<div class="tooltip">
                  <div class="inner">
                    <b>2012 Land Rover Range Rover Evoque</b>
                    <span>Your Price $19,330</span>
                    <p>The Web2Carz National Average is <b>$21,500</b></p>
                  </div>
</a>
Run Code Online (Sandbox Code Playgroud)

然后是JS:

$('.text .youSave').mouseenter(function(){
   var item = $(this);
   var tooltip = $('.tooltip', item).fadeIn();
});
Run Code Online (Sandbox Code Playgroud)