Javascript 从循环中访问循环中的一项
因此,我有两个项目,使用Jquery从数据库中迭代,对于每个项目,我都输出一个按钮来选择特定的项目,当我单击该行的按钮时,我想将详细信息发布到MVC中的控制器Javascript 从循环中访问循环中的一项,javascript,jquery,html,asp.net-mvc,Javascript,Jquery,Html,Asp.net Mvc,因此,我有两个项目,使用Jquery从数据库中迭代,对于每个项目,我都输出一个按钮来选择特定的项目,当我单击该行的按钮时,我想将详细信息发布到MVC中的控制器 $.each(data, function (i, val) { var item = $('<div></div>'); item.append('<h2><a>' +val.Name+ '</a></h2>');
$.each(data, function (i, val) {
var item = $('<div></div>');
item.append('<h2><a>' +val.Name+ '</a></h2>');
item.append('<a id="button">SELECT</a>');
tab.append(item);
});
如果我将函数添加到循环中,它将迭代的次数与循环中的项目相同。那么,我如何处理这个问题,以便在按下选择按钮后发送post名称呢?使用DOM遍历方法获取所需的元素,以提取要传递给
$.ajax()的文本
由于HTML中的标识符必须是唯一的,所以请使用CSS类选择器将其作为目标
$.each(data, function (i, val) {
var item = $('<div></div>');
item.append('<h2><a>' + val.Name + '</a></h2>');
item.append('<a class="button">SELECT</a>');
tab.append(item);
});
将单击移动到页面底部任何循环之外
将id更改为classitem.append('SELECT')代码>用于单击事件以选择正确的值
$('#myId').on('click', 'a.button', function () {
var val = $(this).prev('h2 a').text();//get the val.Name value
var item = { Name: val};//create a object
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: item,//jquery will take care of the encoding
url: "/Person/GetData"
});
});
为什么要把东西放在
标记中?重复的id
属性是无效的html。使用类名。并使用data-*
属性将数据添加到元素中,例如,使用JSON.stringify()
并设置contentType
选项实际上是不必要的,因为它是一个简单的对象。@StephenMuecke,我忽略了contentType
,更新了回答我的意思是应该删除它(因此它使用默认的'application/x-www-form-urlencoded;charset=UTF-8'
,然后使用它的just数据:item,
,这也是为了OP的利益-最好使用url:'@url.Action(“GetData”,“Person”),
$('#myId').on('click', 'a.button', function () {
var item = {
Name: $(this).prev('h2').find('a').text()
};
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: {
item: item
},
url: '@Url.Action("GetData", "Person")' //Note: this will not work in separate JS file
});
});
$('#myId').on('click', 'a.button', function () {
var val = $(this).prev('h2 a').text();//get the val.Name value
var item = { Name: val};//create a object
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: item,//jquery will take care of the encoding
url: "/Person/GetData"
});
});