如何在另一个函数中获取 $.each 函数值

how to grab $.each function value in another function

就我而言, 我有一个 parent div,它有多个 child div。这些childdiv是根据$.each()函数生成的

函数运行的次数,div的次数得到generated.Thesechilddiv包含像--UserId、UserName、UserPic和a这样的数据按照 button.Now,我想在单击按钮时编写一个服务器端函数,并将 post UserId 写入控制器。

现在,我已经看到很多这样的问题,解决方案是拥有一个全局变量并从 $.each 函数中为该变量赋值。但是,在我的例子中,我的 $.each 函数将循环多次,因此如何在单击跟随按钮时返回特定的 item.Id 并将该值 post 返回控制器

$(document).ready(function() {
var parent = $(".div1");

$.getJSON("/Home/GetUsers", null, function(data) {
  parent.html("");

  $.each(data, function(i, item) {
    var html = "<div class='div2'>";
    html += "Name: " + item.UserName + "<br />";
    html += item.ArticleCount;
    html += "<img src='" + item.UserImage + "'height='20px' width='20px'/>";
    html += "<button type='button' class='newButton'>Click Me!</button>";
// wants to send current userId on button click 
    html += item.Id;
    html += "</div>";
    parent.append(html);
  });
});
parent.on('click', '.newButton', function(e) {
   var button = $(this);
    var html = "<div class='listItem'>";
                   $.ajax({  
                           type: "POST", 
                           url: "Home/Follow", // Controller/View   
                           data: { //Here, i am struck, how to get back                      correct userid from above $.each function
                           id: $(".listItem").    
                  }  
});
});

您可以将 item.Id 值作为 Id 或任何 data-* 属性添加到按钮。然后单击即可检索该值。

你也可以只创建一个字符串而不是 html +=

所以我修改了代码,这里是代码片段

$(document).ready(function() {
var parent = $(".div1");

$.getJSON("/Home/GetUsers", null, function(data) {
  parent.html("");

  $.each(data, function(i, item) {
     // Refactored DOM
    var html = "<div class='div2'>Name: " + item.UserName + "<br />"+item.ArticleCount+
                   "<img src='" + item.UserImage + "'height='20px' width='20px'/>"+
                      "<button type='button' class='newButton' id = '"+item.Id+"'>Click Me!</button>"+
                        item.Id+"</div>";

            parent.append(html);
      });
});
parent.on('click', '.newButton', function(event) {
   var getId = event.target.id;  // Event object will give all parameters you need 
   alert(getId);
    var html = "<div class='listItem'>";
                   $.ajax({  
                           type: "POST", 
                           url: "Home/Follow", // Controller/View   
                           data: { id: getId}   // Added the required Id  
});
});

希望这会有用

您可以使用 data 属性 data-id 在每个按钮中存储 id 例如:

html += "<button data-id="+item.Id+" type='button' class='newButton'>Click Me!</button>";

你可以在点击按钮时得到 id :

$.ajax({  
     type: "POST", 
     url: "Home/Follow", // Controller/View   
     data: { id: $(this).data('id') }
});

希望这对您有所帮助。