2010-11-01 75 views
0

alt textjQuery的:徘徊,显示和表问题

好了,所以我有<table>

这里面有<tr>的定义上方(浅灰/灰/黄..)

这些盒子

现在我想让你把鼠标悬停在一个盒子上时,你会看到一个deletebutton。

我已分别<tr>内做到了这一点通过(每个箱子里面)有这样的:

  <td id="delPMicon<?php echo $id; ?>" style="display: none;"> 
          <img src="images/removeWallComment.png"> 
         </td> 

然后,我得到这个:

$('[name=pm]').hover(function() { 
var id = $(this).attr('id'); 

    $('#delPMicon'+ id).show(); 

}); 

名= “PM” 是每名<tr>

这工作正常,但当我标记在其中一个框中,它会变成你如何看到上面。内容被移动到左边,然后就会出现。我不想要这个。我希望它像图像的顶部,然后当你标记结束时,就会出现一个del按钮,在桌子上没有任何变化,并且不会变得如此丑陋,就像你在上面看到的那样,当我悬停其他盒子时变小?

我该怎么做?

这里是我的<tr>

      <tr 
          <?php 
          if($type == "invitation"){ 
          echo 'class="pmInvitation"'; 
          }else{ 
          echo $checkSeen; }?> id="<?php echo $id; ?>" name="pm"> 
    <td class="alternating" style="padding:4px;"> 
           <img border="0" class="image-xxsmall-border" src="images/profilePhoto/thumbs/<?php echo profilbild($bID); ?>" style="width: 44px; height: 48px;"> 
           </td> 
    <td valign="top" style="padding-top:4px;padding:4px;" class="alternating"> 
          <a href="profil.php?id=<?php echo $bID; ?>"><?php echo $name; ?></a> 
          <br /> 
            <span title="forsendelses dato" class="GrayText"><?php get_time($date); ?> 
            <?php if(!(get_day_name_return($date) == "idag")){ 
            echo "<br>". get_day_name_return($date); }?></span> 

           </td> 
    <td valign="top" style="padding-top:4px;padding:4px;" class="alternating"> 

           </td> 
    <td valign="top" style="padding-top:4px;padding:4px;" class="alternating"> 
            <a href="pm.php?read=<?php echo $id; ?>"> 
            <?php echo $title; ?></a> 
            <br /> 
            <span style="font-size: 11px; font-style: italic;"> 
            <a href="pm.php?read=<?php echo $id; ?>"> 
            <?php echo substr($msg, 0, 46); ?>.. 
            </a> 
            </span> 

           </td> 


     <td style="padding-right:4px;padding:4px;" class="alternating"> 
             <input class="cbPick" name="marks[]" type="checkbox" value="<?php echo $id; ?>"> 
            </td> 


<td id="delPMicon<?php echo $id; ?>" style="display: none;"> 
             <img src="images/removeWallComment.png"> 
            </td> 
                    </td> 
    </tr> 

我甚至试图删除显示:没有#delPMicon,去掉IMG,然后悬停它应该在前面加上IMG,这个工作小有一点,但文本中中间和左边被移动到更多的左边,它为它提供了一些空间给delbutton,但是有足够的空间,我能看到什么?

回答

0

问题是“display:none”使得目标元素不占用空间,并且将它放在表格单元格中也不是一个好主意,因为这样做会导致部分隐藏的列。相反,使用“visibility:hidden;”并把它里面的图像上,像这样:

<td> 
    <img src="images/removeWallComment.png" id="delPMicon<?php echo $id; ?>" style="visibility: hidden;"> 
</td> 

然后在你的代码,而不是“秀()”荷兰国际集团你设定的能见度CSS,像下面的元素。你也错过了你的悬停处理程序,所以我也将它包含在下面。

$('[name=pm]').hover(function() { 
    var id = $(this).attr('id'); 
    $('#delPMicon'+ id).css('visibility', 'visible'); 
}, function() { 
    var id = $(this).attr('id'); 
    $('#delPMicon'+ id).css('visibility', 'hidden'); 
}); 

此外,请考虑阅读HTML和jQuery编码风格和最佳实践。你在代码中做了很多事情,这些事情被认为是文体上的草率/丑陋,因为它们使你的代码更容易出错并且更难维护。

+0

你好,谢谢你的回答。这解决了它完美。有一个关于你最后一句话的问题。你认为我的编码是sl//丑陋的? – Johnson 2010-11-01 19:42:26

+0

注释中没有足够的空间来列出具体细节,但这里有一些要点:保持缩进清晰并保持逻辑一致 - 您的代码非常难以遵循。不要使用内联样式(style =“”attributes) - 而是设置一个css类并在样式表中定义规则。不要在行上使用“name”属性,使用css类并使用$('。class-name')进行选择。最后,看起来你正在将过多的业务逻辑融入到视图中 - 尝试将关注点分开一点。 – 2010-11-01 19:55:30

+0

另外,您用javascript编写JavaScript的整个方法设计不佳。不必为行或删除图像本身提供任何ID。相反,只需在删除图像(例如'delete-image')上设置一个css类,然后在jQuery代码中,您可以简单地将它们引用为“$(this).find('delete-image')。css(。 ..)“并避免所有与id相关的丑陋。 – 2010-11-01 20:04:34

0

为了至少使丑陋的一致(使删除按钮使用空间,即使它是不可见的),使用visibility: hiddenvisibility: visible

+0

我该如何做可见性:在jQuery中可见? show()本身不会这样做.. – Johnson 2010-11-01 19:26:37

+0

做一些像'myElement.visibility ='hidden''来隐藏和'myElement.visibility ='可见''来取消隐藏。 – thejh 2010-11-01 19:37:52