【问题标题】:Change selected XML file with jQuery使用 jQuery 更改选定的 XML 文件
【发布时间】:2012-06-11 13:53:34
【问题描述】:

我正在使用以下代码来选择和解析 XML 文件。效果很好,但是因为我有 3 个不同的 XML 文件,所以我也有 3 个不同的页面。如果我可以将 url 替换为 XML 文件,而不是加载一个全新的页面,这将使我正在构建的应用程序更快。

$(document).ready(function(){
                $.ajax({
                    type: "GET",
                    url: "rss/page1",
                    dataType: "xml",
                    success: function(xml) {

所以,我想知道的是:是否可以通过简单的 jQuery 事件更改 url: 的 url? 在伪代码中会是这样的:

<a id="index" href="#">Index</a>
<a id="page1" href="#">Page 1</a>
<a id="page2" href="#">Page 2</a>

如果单击带有id="index"&lt;a&gt; 标签,请将url: "rss/what_ever_it_is_now" 更改为url: "rss/index"

非常感谢!

【问题讨论】:

    标签: javascript jquery xml rss


    【解决方案1】:

    只需在这些元素上挂钩 click 事件即可调用具有适当文件名的函数?

    http://jsfiddle.net/saluce/6rBjX/

    类似这样的:

    <a href="#" class="parseButton" data-filename="rss/index">Index</a>
    <a href="#" class="parseButton" data-filename="rss/page1">Page 1</a>
    <a href="#" class="parseButton" data-filename="rss/page2">Page 2</a>
    
    ​function parseFile(fileName) {
    
    }
    
    $(document).ready(function() {
        $(".parseButton").click(function(s,e) {
            $.ajax({
                type: "GET",
                url: $(this).attr("data-filename"),
                dataType: "xml",
                success: function(xml) {
                ... 
           });
           e.preventDefault();
        }
        }​
    

    通过这种方式,您实际上甚至可以通过更改data-filename 属性中的值来添加更多链接来解析额外的XML 文件(如果您需要的话)。如果您使用a 标记,则e.preventDefault() 行用于防止页面重新加载。如果您确实想要重新加载页面,只需将其删除即可。

    【讨论】:

    • 嘿 Saluce,感谢您的回答,但在这种情况下,按钮不起作用。不过,如果我可以使用按钮,我一定会记住这一点!
    • 请注意,您仍然可以使用a 标签来完成这项工作 =) 检查我的编辑。
    【解决方案2】:

    喂,

    试试这样的:

    $(document).ready(function(){
         $('.lnk').click(function(){
          var pag = 'rss/'+ $(this).attr('id');
                        $.ajax({
                            type: "GET",
                            url: pag,
                            dataType: "xml",
                            success: function(xml) {
          //....
        });
    });
    

    还有链接:

    <a class="lnk" id="index" href="#">Index</a>
    <a class="lnk" id="page1" href="#">Page 1</a>
    <a class="lnk" id="page2" href="#">Page 2</a>
    

    【讨论】:

    • 嗨 CoursesWeb,我现在要试试这个。感谢您的解决方案。只是一个你可以编辑的小问题:因为我的 rss-feed 不是简单地存储在一个名为 rss/ 的文件夹中,我应该将 id 更改为完整链接,然后将其更改为以下 var pag = 'rss/'+ $(this).attr('id'); 将变为 @ 987654326@ 和 id(例如)url.com/stored/index 可以吗?或者您是否建议我使用与http://www.url.com + $(this)... 类似的系统? (希望有意义,哈哈!)
    • 如果您使用 HTML5 规范,您实际上可以在 id 中包含完整路径,因为“/”字符是 HTML5 下ids 的有效字符。
    • 此解决方案一次有效。当我从id=page1 转到id=index 时,它工作正常。当我想回到id=page1 时,它什么也没做。知道为什么吗?
    猜你喜欢
    • 2015-01-07
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多