javascript - 单击链接后如何显示来自服务器的项目

标签 javascript jquery

同学来了!因此,我创建了一个运行 $.ajax 请求的函数,并且对于每个项目,我将 html 输出到 DOM。好吧,检查一下:

  function getLinks (){
  let blogLinks;
  $.ajax(settings).then(function(data, status, xhr){
    data.forEach(function(item, i, arr){
      let id = item._id;
      if (item.title){
        blogLinks = `<li><a class="link" href=#${item.title}>${item.title}</a></li>`
        $($findUl).append(blogLinks);
      }
    })
  })
}

这个变量也可能是有用的信息:

let $blogViewAll =
    $(`<div class="blog-view">
        <h3>Check Out These Blogs</h3>
        <div class="column-1">
          <ul class="link-list"></ul>
        </div>
        <div class="column-2"></div>
      </div>`);

let $findUl = $($blogViewAll).find('.link-list');

它正在做我想要它做的事情并将链接附加到页面。现在我想单击链接并将消息正文显示在页面上。所以我正在尝试这个:

$findUl.on('click', function(e){
  $.ajax(settings).then(function(data, status, xhr){
    data.forEach(function(item, i, arr){
      //since you clicked on that link
      //I should look at what you clicked
      //match it to the corresponding obj{item.body}
      //and display it, but I don't know how to match and grab :(
    })
  })
});

这就是我被困住的地方!有什么建议么?谢谢!!! (顺便说一句,我正在使用tiny-za 服务器)

最佳答案

您可以通过属性e.currentTarget访问用户在初始参数e中单击的当前链接:

$findUl.on('click', function(e){
  // this gives you the DOM node that was clicked:
  console.log(e.currentTarget);
}

使用 jQuery 获取标题的小快捷方式:

$findUl.on('click', function(e){
  var title = $(e.currentTarget).text();
}

另一个注意事项,您实际上应该只在 ajax 调用中从服务器加载数据一次,而不是每次单击某些内容时(这很慢)。

我建议在页面加载时将数据加载到对象中,然后使用 objct 属性附加到 DOM。您将能够在未来的点击处理程序中访问同一对象

关于javascript - 单击链接后如何显示来自服务器的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107043/

相关文章:

javascript - 上下文结帐中的 Paypal - 防止页面重定向

javascript - 相当于链接到字体文件的 JS

javascript - 一个分区中的所有段落

javascript - 将宽度设置为 50% 时 Div 不居中

javascript - 用于处理单选按钮启用/禁用的通用 JavaScript

javascript - HTML表格打印

javascript - Backbone groupBy 两个 View ?

javascript - 如何在 JavaScript 或 jQuery 中查找父元素宽度?

javascript - 在两个输入框中自动完成? - JavaScript

javascript - NodeJS中通过URL发送的参数数量