【问题标题】:div display problemsdiv显示问题
【发布时间】:2012-03-05 10:52:56
【问题描述】:

这个问题看起来很简单,所以如果不礼貌请提前认错

我在设置为显示的选项卡面板 div 中有一些 div。

<div id="fragment-5a" class="ui-tabs-panel" style="display: block;">
    <div id="mainpic">
    <img align="middle" alt="somewhere" 
    src="http://localhost/gopag3/projects/somest.jpg"></div> 
<div id="altpic"><img src="#"></div> 
<div id="mainpicblurb">texttexttext</div></div>

一个 div 'ma​​inpic' 包含一个 img。第二个 'ma​​inpicblurb' 包含子 div 'piclinks' 内的文本和链接。 Div 'altpic' 为空且隐藏(显示:无),但除此之外是 'mainpic' 的精确副本。

我正在尝试编写一个执行以下操作的脚本:

  1. 隐藏“主图”
  2. 抓取 href (img src) 并将其作为 img src 添加到 'altpic'
  3. 显示“altpic”

这就是我所做的。

$(document).ready(function() {
    $('#piclinks div a').click(function() {
        var link = $(this).attr('href');
        $('#mainpic').hide();
        $('#altpic img').replaceWith('<img align="middle" src="' + link + '">');
        $('#altpic').show();
    return false;
    }); 
});

这在整体上不起作用。成功抓取href。 img src 成功转储到 'altpic' 和 'return false' 工作正常,但 'mainpic' 或 'altpic' 都没有正确的显示属性。

这可能是标签 CSS 覆盖了我所做的任何事情,尽管在 Firebug 中查看它我看不出如何。

很可能上面是一长串的嚎叫。我的直觉是选择过程是错误的。我需要从#piclinks div 遍历DOM,然后备份树以收集#mainpic 和#altpic,可能使用parent() 和siblings()。

无论如何,欢迎提出建议/理解批评。

汤姆

【问题讨论】:

  • 链接指向img?路径是什么?为什么不尝试只更改imgattr 而不是创建一个新的? jQuery 创建内联 CSS,因此据我所知,它不能被 CSS 规则覆盖...
  • 您发布的代码非常好。见this fiddle。你想做什么?
  • Thx S0pra - 小提琴很有帮助。

标签: jquery


【解决方案1】:

你应该使用

    $('#mainpic img').hide();
    $('#altpic img').show();

否则您将隐藏/显示 div

【讨论】:

  • 谢谢。如果包含的 div 即 #mainpic 仍被渲染,并且具有纯色背景,那么人们不会只看到纯色渲染背景吗?
  • @Tom 是的,应该是输出
  • 啊——在这种情况下,我必须为#altpic 使用不正确的标记如何确保它不会被#mainpic 的可见背景隐藏?
【解决方案2】:

隐藏给定 id 的 CSS 可能是个问题。尝试为 altpic 添加一个隐藏类:

<div id="fragment-5a" class="ui-tabs-panel" style="display: block;">
    <div id="mainpic">
    <img align="middle" alt="somewhere" 
    src="http://localhost/gopag3/projects/somest.jpg"></div> 
<div id="altpic" class="is-hidden"><img src="#"></div> 
<div id="mainpicblurb">texttexttext</div></div>

然后继续删除类以使 div 可见:

$(document).ready(function() {
    $('#piclinks div a').click(function() {
        var link = $(this).attr('href');
        $('#mainpic').hide();
        $('#altpic img').attr({'align':"middle",'src':link});
        $('#altpic').removeClass('is-hidden')
    return false;
    }); 
});

在 CSS 中添加:

.is-hidden {display:none;}

并删除显示:无;对于#altpic

【讨论】:

  • 谢谢。我没有高兴地尝试过你的脚本。问题不是 img src 或 href 或默认行为部分。是 div 显示不正常。
  • 你的意思是#altpic 没有显示?在这种情况下,您能否首先提供它是如何隐藏的?使用 CSS 还是 JQuery?
  • CSS。 #altpic 未显示。并且#mainpic 没有隐藏。如果我将选择器更改为#mainpic img,则 img 会被隐藏,但这还不够。
  • 我对我的回答做了一些改变。希望这次会有所帮助。 :(
  • 我的问题很奇特。 jQuery 现在至少将样式“display:none”添加到#mainpic,并将“display:block”添加到#altpic。都好。但是由于某些未知原因,#mainpic 中的图像仍然被渲染。啊啊啊……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
相关资源
最近更新 更多