【问题标题】:Show/Hide span on the same spot在同一位置显示/隐藏跨度
【发布时间】:2012-10-29 15:07:56
【问题描述】:

我正在使用 jQuery 来显示或隐藏跨度。但我希望<div> 出现在与我单击的链接相同的位置。当前代码实际上在屏幕左侧显示了<div> 标签。这是我正在使用的代码。

<script>
$(document).ready(function(){
    $(".slidingDiv").hide();
    $(".show_hide").show();
    $('.show_hide').click(function(){
    $(".slidingDiv").slideToggle();
      return false;
    });
    $(".slidingDiv1").hide();
    $(".show_hide1").show();
    $('.show_hide1').click(function(){
    $(".slidingDiv1").slideToggle();
      return false;
    });
});
</script>

跨度标签:

<span>
 <a href="#" class="show_hide">Japan</a>
 <span class="slidingDiv">
   <img src="02-1 ImageFiles/01 Japan.JPG" style="width:235px; height:245px;">
   <a href="#" class="show_hide">Close</a>
 </span>
 is made up of islands, regions, prefectures (government districts), cities, and surrounding communities. The main island, Honshu, has thirty-four prefectures making up five regions. The 
 <a class="show_hide1" href="#">Tōhoku Region</a>
 <span class="slidingDiv1">
  <img src="02-1 ImageFiles/02 TohokuRegion.JPG" style="width:217px; height:236px;">
  <a href="#" class="show_hide1">Close</a>
</span>

【问题讨论】:

  • 您发布的代码中没有 div。
  • 我试过了,但它不起作用。我有几个这样的链接。当我单击它们时,它们的图像出现在窗口的左侧,而不是与链接相同的位置。
  • 它不工作。我希望我的跨度出现在我点击的链接下方。
  • 我知道它不起作用,这是您在调试时使用的原始代码。
  • 没有 G-Man,我的意思是我把你的代码放在一个小提琴里,然后把它贴在这里,这样人们就可以在尝试解决你的问题时使用它。

标签: jquery html jquery-plugins


【解决方案1】:

这可以是您的 HTML 部分:

<a href="#" class="show_hide" style="position: relative;">Japan</a>
<span class="slidingDiv" style="position: absolute; left: 0;">
    <img src="02-1 ImageFiles/01 Japan.JPG" style="width: 235px; height: 245px;" />
    <a href="#" class="show_hide_close">Close</a>
</span>
is made up of islands, regions, prefectures (government districts), cities, and surrounding communities. The main island, Honshu, has thirty-four prefectures making up five regions. The
<a class="show_hide" href="#" style="position: relative;">T&#197;hoku Region</a>
<span class="slidingDiv" style="position: absolute; left: 0;">
    <img src="02-1 ImageFiles/02 TohokuRegion.JPG" style="width: 217px; height: 236px;" />
    <a href="#" class="show_hide_close">Close</a>
</span>

这可以是你的脚本部分:

<script type="text/javascript">
    $(document).ready(function () {
    $(".slidingDiv").hide();
    $(".show_hide").show();

    $('.show_hide').click(function () {
        var el = $(this);
        var slidingDiv = el.find("span.slidingDiv");
        if (slidingDiv.length > 0) {
            slidingDiv.slideToggle(function () { el.after(slidingDiv); });
        }
        else {
            slidingDiv = el.next("span.slidingDiv");
            el.append(slidingDiv);
            slidingDiv.slideToggle();
        }
        return false;
    });
    $('.show_hide_close').click(function () {
        $(this).parent().parent("a.show_hide").click();
        return false;
    });
});

解释:

  • 脚本将在单击时将跨度附加到锚点,并在关闭时将其移回原来的位置。 原因是您不能在 html 代码中的锚标记中包装块(这里是跨度),因此我们将在运行时进行。我们应该包装它,因为我们需要在锚标记下方显示跨度。

  • 包含 img 和关闭按钮的 span 应该有绝对位置

  • 将被点击的锚点应该有相对位置,以便浏览器可以从父锚点计算跨度的位置,所以它现在将位于链接下方

  • 我概括了锚和跨度类,所以你可以只用一个脚本块来使用它

  • 已为关闭按钮分配了不同的类,因此单击它将单击父锚点

【讨论】:

  • 它仍然显示为相同。 mapisms.seas.gwu.edu/2.php - 我按照你说的实现了,但它不起作用。图片仍显示在页面左侧,我希望图片显示在链接下方。
  • @G-Man 你是否替换了 HTML 代码?您忘记将“位置:相对”添加到锚点和“位置:绝对”添加到 span.slidingDiv
    我在解释部分进行了解释;-)
  • 哦,明白了。但是跨度隐藏了文本。我该如何解决?
  • 当然可以!那是因为您希望跨度显示在链接下方.. 读者也不需要阅读跨度下方的文本,而他/她想查看跨度。我不明白,请解释一下你想要什么..!?
  • 我的要求是用户必须能够同时看到文本和跨度。如果用户想要关闭图像,他也可以这样做。在我之前的代码中,跨度出现在页面左侧,但文本移动到跨度下方。我想要那样。
【解决方案2】:

移除 div 并将 span 设置为 display: block

<a href="#" class="show_hide">Japan</a>
<a href="#" class="show_hide">Close</a>
<span class="slidingDiv">
    <img src="02-1 ImageFiles/01 Japan.JPG" style="width:235px; height:245px;" />    
</span>

span
{
   display: block;
}​

Check Fiddle

【讨论】:

  • 这不是我正在寻找的解决方案。我希望我的跨度出现在我点击的链接下方。但是您的解决方案使图像出现在左侧
  • 请检查我编辑的问题。我使用超过 2 个链接。我不想使用 div 标签,但我想使用 span 标签来避免换行。
  • 我使用了你的代码,但它不起作用。查看此页面mapisms.seas.gwu.edu/2.php
  • 如果是这种情况,那么您需要将其封装在另一个容器中并使用位置:相对属性..否则很难设置其位置..您可以将 div 设置为内联或内联-bloc 如果你不想要块效果
猜你喜欢
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 2017-07-01
  • 2015-09-25
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多