【发布时间】:2011-03-03 13:52:50
【问题描述】:
我想要做的事情的概念相当简单。我有一个通过 XSLT 从 XML 文档加载的公司徽标网格,每个徽标都有自己独特的公司简介链接。
我在页面上有一个单独的 div,本质上是一个“预览”框。我想做的是这样的:
我滚动一个徽标,它会将公司名称和简短描述加载到预览 div 中。此内容是通过 XML 加载的。
我一直在搞乱 Jquery load() 函数,将目标文档更改为在 Hover 上加载——它几乎得到了我想要的,但是它将整个目标 XML 文档加载到 div 中。
如何将此目标 XML 数据分成单独的 div? (我的风格不同)
我假设我会以某种方式使用 Ajax。我想将<name> 节点加载到name_div 中,将<desc> 节点加载到description_div 中,并让它们在悬停时更新。提前感谢您的帮助!
以下是我正在使用的代码的一些示例:
portfolio.xml 文件(这个文件是我的主页,显示网格和预览 div,示例使用 3 家公司):
<portfolio>
<company>
<name>ABC Company</name>
<sdesc>Consumer products</sdesc>
<logo-thumb>abcco.jpg</logo-thumb>
<link>abcco.xml</link>
</company>
<company>
<name>DEF Company</name>
<sdesc>Communications firm</sdesc>
<logo-thumb>defco.jpg</logo-thumb>
<link>defco.xml</link>
</company>
<company>
<name>GHI Corporation</name>
<sdesc>Electronic products</sdesc>
<logo-thumb>ghico.jpg</logo-thumb>
<link>ghico.xml</link>
</company>
</portfolio>
以下 XSLT 在页面上显示该代码:
<xsl:for-each select="portfolio/company">
<xsl:sort select="name" />
<div class="invest-port-thumb">
<a>
<xsl:attribute name="href">
<xsl:value-of select="link" />
</xsl:attribute>
<img>
<xsl:attribute name="src">
<xsl:value-of select="logo-thumb" />
</xsl:attribute>
</img>
</a>
</div>
</xsl:for-each>
这是“预览 div”的 HTML 结构:
<div id="preview">
<div id="preview-name"> [Name to display here] </div>
<div id="preview-desc"> [Description to display here] </div>
</div>
所有 3 个公司徽标都加载到页面中,每个都显示从 加载的链接图像。想要的效果是在悬停时,显示“preview-name”div中的内容,以及“preview-desc”div中的内容。
让我尝试更具体一点。以下是一些示例:
portfolio.xml 文件(这个文件是我的主页,显示网格和预览 div,示例使用 3 家公司):
<portfolio>
<company>
<name>ABC Company</name>
<sdesc>Consumer products</sdesc>
<logo-thumb>abcco.jpg</logo-thumb>
<link>abcco.xml</link>
</company>
<company>
<name>DEF Company</name>
<sdesc>Communications firm</sdesc>
<logo-thumb>defco.jpg</logo-thumb>
<link>defco.xml</link>
</company>
<company>
<name>GHI Corporation</name>
<sdesc>Electronic products</sdesc>
<logo-thumb>ghico.jpg</logo-thumb>
<link>ghico.xml</link>
</company>
</portfolio>
以下 XSLT 在页面上显示该代码:
<xsl:for-each select="portfolio/company">
<xsl:sort select="name" />
<div class="invest-port-thumb">
<a>
<xsl:attribute name="href">
<xsl:value-of select="link" />
</xsl:attribute>
<img>
<xsl:attribute name="src">
<xsl:value-of select="logo-thumb" />
</xsl:attribute>
</img>
</a>
</div>
</xsl:for-each>
这是“预览 div”的 HTML 结构:
<div id="preview">
<div id="preview-name"> [Name to display here] </div>
<div id="preview-desc"> [Description to display here] </div>
</div>
所有 3 个公司徽标都加载到页面中,每个都显示从 <logo-thumb> 加载的链接图像。想要的效果是在悬停时,在“preview-name”div中显示<name>的内容,在“preview-desc”div中显示<sdesc>的内容。
【问题讨论】:
-
我有兴趣(学术上)了解通过 XMLHttpRequest 加载 XML 时 XSL 是否/如何工作
-
您没有考虑过通过 ajax 将整个文档加载到 jquery 中,解析 XML,然后将必要的信息附加到每个元素?如果你愿意,会详细说明..
-
这是另一种选择。我只是认为这将更难做到。目前,我的页面设置就像我想的那样。我在 XML 文件中有所有公司,每个公司都有他们的名称和描述。我只是不确定如何将其分开并根据我悬停的图像显示内容。
-
@Andrew:为了提供完整的答案,我们需要输入和输出示例。如果链接和预览的所有数据都在一个 XML 文档中,您可以在一个 XSLT 样式表中运行它(稍后使用 CSS 应用样式)
-
就你的做法而言,我强烈倾向于在这种情况下做 xml 处理服务器端,然后你可以做更多的 UI/HTML/CSS/JavaScript干净地。 StackOverflow 问题:如果您需要使用“编辑”功能更新您的问题,请不要将其作为新答案。
标签: javascript jquery xml ajax