在每个动态 div 中获取一个元素的值
Grab an element's value within each of the dynamic div
我有一个数组 ob 对象,我正在使用它来创建动态 divs。我的每个对象都有一个 属性 'logoColor' ,其值为 1 或 2.
现在,在我的每个动态 div 中,我都有一个下拉列表 'Logo Colour',其值为 1 或 2。但是,它显示为 'Red' 或 'Blue'.
用户可以选择更改下拉列表中的任何 logoColor 值。
如何在单击 'Send Data' 按钮时调用的同一函数 sendData() 中从动态生成的 div 中获取每个下拉列表的值?
代码片段:
var myData =[{
"company" : "ABC",
"logoColor": "1"
},{
"company" : "BCD",
"logoColor": "2"
},{
"company" : "CDE",
"logoColor": "1"
},{
"company" : "DEF",
"logoColor": "2"
}];
function createDisplay() {
myData.forEach(function(obj) {
$('.container').append(
$('<div>').addClass('box').append(
$('<label>').text('Company Website: '),
$('<span>').text(obj.company),
$('<br /><label>').text('Logo Colour: '),
$('<select>').addClass('selectLogo').append(
$('<option>').val('1').text('Red').prop('selected', true),
$('<option>').val('2').text('Blue')
).val(obj.logoColor)
)
)
});
}
function sendData(){
myData.forEach(function(obj){
var logoColor = $('.selectLogo').val();
});
var myJSON = JSON.stringify(myData);
var dataContent = {'content': myJSON};
$.ajax({
url:"/abc/myNewData",
type: "POST",
data: dataContent,
dataType: 'JSON',
success: function(response){
alert("Data sent successfully!");
}
});
}
.box {
background-color: skyblue;
height: 100px;
border: 2px solid lightgrey;
border-radius: 4px;
margin-top: 5px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<button class="btn btn-primary" onclick="createDisplay()">Create Data </button>
<button class="btn btn-primary" onclick="sendData()">Send Data </button>
<div class="container">
</div>
Try :
var logoColor = $(this).find(".selectLogo").val();
试试下面的代码
var logoColor = [];
$('.box .selectLogo option:selected').each(function() {
logoColor.push($(this).val())
})
var myJSON = JSON.stringify(logoColor);
var dataContent = {
'content': myJSON
};
这将遍历所有 div select 和 return selected 值。
var myData = [{
"company": "ABC",
"logoColor": "1"
}, {
"company": "BCD",
"logoColor": "2"
}, {
"company": "CDE",
"logoColor": "1"
}, {
"company": "DEF",
"logoColor": "2"
}];
function createDisplay() {
myData.forEach(function(obj) {
$('.container').append(
$('<div>').addClass('box').append(
$('<label>').text('Company Website: '),
$('<span>').text(obj.company),
$('<br /><label>').text('Logo Colour: '),
$('<select>').addClass('selectLogo').append(
$('<option>').val('1').text('Red').prop('selected', true),
$('<option>').val('2').text('Blue')
).val(obj.logoColor)
)
)
});
}
function sendData() {
var logoColor = [];
$('.box .selectLogo option:selected').each(function() {
logoColor.push($(this).val())
})
var myJSON = JSON.stringify(logoColor);
var dataContent = {
'content': myJSON
};
console.log(dataContent)
$.ajax({
url: "/abc/myNewData",
type: "POST",
data: dataContent,
dataType: 'JSON',
success: function(response) {
alert("Data sent successfully!");
}
});
}
.box {
background-color: skyblue;
height: 100px;
border: 2px solid lightgrey;
border-radius: 4px;
margin-top: 5px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<button class="btn btn-primary" onclick="createDisplay()">Create Data </button>
<button class="btn btn-primary" onclick="sendData()">Send Data </button>
<div class="container">
</div>
尝试按如下方式循环动态生成的 div:
var myData = [];
$("div.box").each(function(i){
var obj = {};
console.log("index"+i);
obj["company"] = $(this).find("span").text();
obj["logoColor"] = $(this).find('.selectLogo').val();
myData.push(obj);
});
var myData = [{
"company": "ABC",
"logoColor": "1"
}, {
"company": "BCD",
"logoColor": "2"
}, {
"company": "CDE",
"logoColor": "1"
}, {
"company": "DEF",
"logoColor": "2"
}];
function createDisplay() {
myData.forEach(function(obj) {
$('.container').append(
$('<div>').addClass('box').append(
$('<label>').text('Company Website: '),
$('<span>').text(obj.company),
$('<br /><label>').text('Logo Colour: '),
$('<select>').addClass('selectLogo').append(
$('<option>').val('1').text('Red').prop('selected', true),
$('<option>').val('2').text('Blue')
).val(obj.logoColor)
)
)
});
}
function sendData() {
var myData = [];
$("div.box").each(function(i) {
var obj = {};
console.log("index"+i);
obj["company"] = $(this).find("span").text();
obj["logoColor"] = $(this).find('.selectLogo').val();
myData.push(obj);
});
var myJSON = JSON.stringify(myData);
alert(myJSON);
var dataContent = {
'content': myJSON
};
$.ajax({
url: "/abc/myNewData",
type: "POST",
data: dataContent,
dataType: 'JSON',
success: function(response) {
alert("Data sent successfully!");
}
});
}
.box {
background-color: skyblue;
height: 100px;
border: 2px solid lightgrey;
border-radius: 4px;
margin-top: 5px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<button class="btn btn-primary" onclick="createDisplay()">Create Data </button>
<button class="btn btn-primary" onclick="sendData()">Send Data </button>
<div class="container">
</div>
我有一个数组 ob 对象,我正在使用它来创建动态 divs。我的每个对象都有一个 属性 'logoColor' ,其值为 1 或 2.
现在,在我的每个动态 div 中,我都有一个下拉列表 'Logo Colour',其值为 1 或 2。但是,它显示为 'Red' 或 'Blue'.
用户可以选择更改下拉列表中的任何 logoColor 值。
如何在单击 'Send Data' 按钮时调用的同一函数 sendData() 中从动态生成的 div 中获取每个下拉列表的值?
代码片段:
var myData =[{
"company" : "ABC",
"logoColor": "1"
},{
"company" : "BCD",
"logoColor": "2"
},{
"company" : "CDE",
"logoColor": "1"
},{
"company" : "DEF",
"logoColor": "2"
}];
function createDisplay() {
myData.forEach(function(obj) {
$('.container').append(
$('<div>').addClass('box').append(
$('<label>').text('Company Website: '),
$('<span>').text(obj.company),
$('<br /><label>').text('Logo Colour: '),
$('<select>').addClass('selectLogo').append(
$('<option>').val('1').text('Red').prop('selected', true),
$('<option>').val('2').text('Blue')
).val(obj.logoColor)
)
)
});
}
function sendData(){
myData.forEach(function(obj){
var logoColor = $('.selectLogo').val();
});
var myJSON = JSON.stringify(myData);
var dataContent = {'content': myJSON};
$.ajax({
url:"/abc/myNewData",
type: "POST",
data: dataContent,
dataType: 'JSON',
success: function(response){
alert("Data sent successfully!");
}
});
}
.box {
background-color: skyblue;
height: 100px;
border: 2px solid lightgrey;
border-radius: 4px;
margin-top: 5px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<button class="btn btn-primary" onclick="createDisplay()">Create Data </button>
<button class="btn btn-primary" onclick="sendData()">Send Data </button>
<div class="container">
</div>
Try :
var logoColor = $(this).find(".selectLogo").val();
试试下面的代码
var logoColor = [];
$('.box .selectLogo option:selected').each(function() {
logoColor.push($(this).val())
})
var myJSON = JSON.stringify(logoColor);
var dataContent = {
'content': myJSON
};
这将遍历所有 div select 和 return selected 值。
var myData = [{
"company": "ABC",
"logoColor": "1"
}, {
"company": "BCD",
"logoColor": "2"
}, {
"company": "CDE",
"logoColor": "1"
}, {
"company": "DEF",
"logoColor": "2"
}];
function createDisplay() {
myData.forEach(function(obj) {
$('.container').append(
$('<div>').addClass('box').append(
$('<label>').text('Company Website: '),
$('<span>').text(obj.company),
$('<br /><label>').text('Logo Colour: '),
$('<select>').addClass('selectLogo').append(
$('<option>').val('1').text('Red').prop('selected', true),
$('<option>').val('2').text('Blue')
).val(obj.logoColor)
)
)
});
}
function sendData() {
var logoColor = [];
$('.box .selectLogo option:selected').each(function() {
logoColor.push($(this).val())
})
var myJSON = JSON.stringify(logoColor);
var dataContent = {
'content': myJSON
};
console.log(dataContent)
$.ajax({
url: "/abc/myNewData",
type: "POST",
data: dataContent,
dataType: 'JSON',
success: function(response) {
alert("Data sent successfully!");
}
});
}
.box {
background-color: skyblue;
height: 100px;
border: 2px solid lightgrey;
border-radius: 4px;
margin-top: 5px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<button class="btn btn-primary" onclick="createDisplay()">Create Data </button>
<button class="btn btn-primary" onclick="sendData()">Send Data </button>
<div class="container">
</div>
尝试按如下方式循环动态生成的 div:
var myData = [];
$("div.box").each(function(i){
var obj = {};
console.log("index"+i);
obj["company"] = $(this).find("span").text();
obj["logoColor"] = $(this).find('.selectLogo').val();
myData.push(obj);
});
var myData = [{
"company": "ABC",
"logoColor": "1"
}, {
"company": "BCD",
"logoColor": "2"
}, {
"company": "CDE",
"logoColor": "1"
}, {
"company": "DEF",
"logoColor": "2"
}];
function createDisplay() {
myData.forEach(function(obj) {
$('.container').append(
$('<div>').addClass('box').append(
$('<label>').text('Company Website: '),
$('<span>').text(obj.company),
$('<br /><label>').text('Logo Colour: '),
$('<select>').addClass('selectLogo').append(
$('<option>').val('1').text('Red').prop('selected', true),
$('<option>').val('2').text('Blue')
).val(obj.logoColor)
)
)
});
}
function sendData() {
var myData = [];
$("div.box").each(function(i) {
var obj = {};
console.log("index"+i);
obj["company"] = $(this).find("span").text();
obj["logoColor"] = $(this).find('.selectLogo').val();
myData.push(obj);
});
var myJSON = JSON.stringify(myData);
alert(myJSON);
var dataContent = {
'content': myJSON
};
$.ajax({
url: "/abc/myNewData",
type: "POST",
data: dataContent,
dataType: 'JSON',
success: function(response) {
alert("Data sent successfully!");
}
});
}
.box {
background-color: skyblue;
height: 100px;
border: 2px solid lightgrey;
border-radius: 4px;
margin-top: 5px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<button class="btn btn-primary" onclick="createDisplay()">Create Data </button>
<button class="btn btn-primary" onclick="sendData()">Send Data </button>
<div class="container">
</div>