javascript - Jquery菜单-返回json数据

标签 javascript jquery html json

我已经从 jquery 脚本创建了一个菜单。该脚本解析 json 响应文件并创建菜单。这样可行。但是,菜单会链接到一个 URL。我不希望它链接到 URL,而是从该 URL 获取 json 响应并解析它。我已经尝试过,无论如何,它总是遵循 URL。这是我到目前为止所拥有的:

jQuery 菜单创建(工作):

<script>
    $.getJSON('https://example.com/api/products/GetProductList/', function(data) {
        var output = '<div class="panel panel-default">';
        for (var i in data.Categories) {
            output += '<div class="panel-heading '+data.Categories[i].category_id +'"><a data-toggle="collapse" data-parent="#accordion" href="#' + data.Categories[i].category_id + '-products">';
            output += data.Categories[i].Category + '</a></div>';
            output += '<div id="' + data.Categories[i].category_id + '-products" class="panel-collapse collapse"><div class="panel-body">';
            for (var j in data.Categories[i].Products) {
                output += '<li><a class="ProdLink" href="https://example.com/api/products/GetProductDetail/'+data.Categories[i].Products[j].product_id+'">'+data.Categories[i].Products[j].short_description + " -- " + data.Categories[i].Products[j].coins+' coins</a></li>';
            }
            output += "</div></div>";
        }
        output += "</div>";

        document.getElementById("accordion").innerHTML = output;
    });
</script>

这将创建一个包含此类项目的菜单

<a class="ProdLink" href="https://example.com/api/products/GetProductDetail/2">Test Item</a>

为了解析来自此 URL 的数据,我尝试过:

     <script>
 $('#accordion').on('click','a.ProdLink',function(event) {
    event.preventDefault();
    var url = $(this).attr("href");

    $.getJSON(url, function(data) {
        var output = '<div>';
        for (var i in data) {
            output += data[i].full_description;
        }
        output += "</div>";

        document.getElementById("itemdata").innerHTML = output;
    });});

</script>

但这不起作用。任何见解将不胜感激。

最佳答案

您正在动态附加链接,因此请使用 event delegation 处理动态元素上的事件,此处为 a.ProdLink

$('#accordion').on('click','a.ProdLink',function(event){
  ...
});

此外,这一行表明ProdLinkid,将其更改为class以避免重复ID

output += '<li><a id="ProdLink" ...

cloudworks points out点击功能应该用 apt 括号关闭。

关于javascript - Jquery菜单-返回json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129674/

相关文章:

html - 诺基亚 5800 浏览器中的 div 溢出

javascript - 使用 JavaScript 将光标放在文本输入元素中的文本末尾

javascript - 如何使用jade和express在脚本标签中动态生成javascript

javascript - 如何每隔一小时更新变量而不由用户刷新页面?

javascript - 2 列列表行 CSS JS 上的高度相同

javascript - 隐藏元素时如何为 div 的背景设置动画?

javascript - JavaScript 数字类型(C 的 double)的陷阱

javascript - 将路径坐标获取到我的 JavaScript 文件中

javascript - 单击时触发事件(复选框+标签除外)

javascript - 如何淡入/淡出滚动后固定的导航栏?