JSON数组href作为jQuery中的变量

时间:2012-03-30 19:32:14

标签: json function variables jquery

我有一个getJSON函数,可以将结果转换为html模板,以显示为包含每个列表项中不同超链接的列表。我需要覆盖链接的正常html函数,因此它不会打开新页面,而是使用我的navClickListener()函数中的load()方法加载到特定的分区。

如果我将一个虚拟网址放入var gotoURL = '';//<--..AND GET THE ITEMS LINK INTO THIS VAR...,它会按计划运行,但我需要从数组项中获取实际网址。

我无法想办法做到这一点。您可以通过我的片段查看并注意所有CAPS中的内联评论。

谢谢你的帮助。

function loadNav(url, container, appendE) {
        $.getJSON(url, function(data){

            $.each(data.items, function(){
                var newItem = $('#' + container).clone();
                // Now fill in the fields with the data
                . . . .
                newItem.find("a").attr("href", this.gotoURL);//<--PREVENT NORMAL FUNCTION...
                // And add the new list item to the page
                newItem.children().appendTo('#' + appendE)
            });
            . . . .
            // Click listener for navigation items
            var target = data.targetKey;
            var gotoURL = '';//<--..AND GET THE ITEMS LINK INTO THIS VAR...
            navClickListener(appendE, target, gotoURL);
        });
    };

    /* ========== Navigation click listener function ============= */   
    function navClickListener(appendE, target, gotoURL) {
        $('#' + appendE).on('click', 'a', function(e){
            e.preventDefault();
             $('#' + target).load(gotoURL);//<--...SO IT GETS INTO HERE??
             . . . .
        });
    };

2 个答案:

答案 0 :(得分:0)

好的,我厌倦了添加更多评论的东西,当我点击输入时它会一直发布。

我想我想说的是我不知道你的gotoURL来自哪里。我会尝试在其中放置一个虚拟URL进行测试,以查看您的URL是否更新。如果确实如此,那么你的gotoURL就是问题所在。

newItem.find("a").attr("href", "IAmtesting.com")

这里还有一些fiddler

答案 1 :(得分:0)

执行此操作的最佳方法是在href中执行内联JavaScript,需要将数据库中的gotoURL行更改为:javascript:navClickListener('bodyContent', 'http://192.168.1.34/wiki/index.php/Airworthiness_Directive #content');这对于保持双引号的内联很重要在newItem.find("a").attr("href", this.gotoURL);函数中执行jQuery.getJSON( url [, data] [, success(data, textStatus, jqXHR)] )时结束。任何其他类型的内联javaScript方法都行不通! (即:javascript:void(0);" onclick='javascript:navClickListener("navContent", "bodyContent" "http://192.168.1.34/wiki/index.php/Airworthiness_Directive #content");')&lt; - 请参阅 onClick 之前的结束引用。

上面的其他脚本更改:

REMOVED:

var gotoURL = '';//<--..AND GET THE ITEMS LINK INTO THIS VAR...
navClickListener(appendE, target, gotoURL);

将navClickListener()函数更改为:

function navClickListener(target, gotoURL) {
    $('#' + target).load(gotoURL);
};

更改了gotoURL中的数据库数据:

/wiki/index.php/Airworthiness_Directive #content

为:

javascript:navClickListener('bodyContent', 'http://192.168.1.34/wiki/index.php/Airworthiness_Directive #content');