我试图写function
,value
从input:radio
或text()
span
返回checkbox
,html
检查。
没有必要同时返回。其中一个或另一个都会有所帮助。
这是$('input.choose-age').on('change', function() {
$('input.choose-age').not(this).prop('checked', false);
});
模板示例:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="checkbox">
<div class='col-xs-3 col-md-2'>
<input type="radio" id='wom-10-14 age' class='choose-age' value='10-14' checked /> <span class='text-left'>10-14</span>
</div>
<div class='col-xs-3 col-md-2'>
<input type="radio" id='wom-15-19 age' class='choose-age' value='15-19' /> <span class='text-left'>15-19</span>
</div>
<div class='col-xs-3 col-md-2'>
<input type="radio" id='wom-10-19 age' class='choose-age' value='10-19' /> <span class='text-left'>10-19</span>
</div>
</div>
&#13;
function ageLabel() {
var label = $('input:radio').change(function() {
var result = $('input:radio:checked').map(function() {
var age = $(this).next('span').text();
return age;
}).get();
return result[0];
});
return label;
};
&#13;
这是我到目前为止所尝试的:
尝试1
function ageLabel() {
$('#age').click(function() {
if ($(this).is(':checked')) {
var result = $(this).next('span').text();
};
return result;
});
};
尝试2
function ageLabel() {
$('input:radio').click(function() {
if ($(this).is(':checked')) {
var results = $('input:radio:checked').map(function() {
var aged = $(this).next('span').text();
return aged;
}).get();
return results[0];
};
});
};
尝试3
function ageLabel() {
d3.selectAll('#age').on('change', function() {
val = this.value;
return val;
});
};
尝试4
value
选中不同的text()
时,上面的每个代码都不会返回新的input
或{{1}}。
如何实现这一结果?
干杯!
答案 0 :(得分:3)
最简单的// search_steps.js
module.exports = function() {
this.Given('I have visited Google', function (done) {
client
.url('http://google.com')
.call(done);
});
this.When('I search for {arg1:stringInDoubleQuotes}', function (arg1, done) {
// Write code here that turns the phrase above into concrete actions
client
.setValue('input[name="q"]', 'Kittens')
.call(done);
});
this.Then('I see {arg1:stringInDoubleQuotes}', function (arg1, done) {
// Write code here that turns the phrase above into concrete actions
client
.getValue('input[name="q"]').then(function(text){
expect('Kittens').to.eql(text);
})
.call(done);
});
};
方式是:
d3
d3.selectAll(".choose-age")
.on("change", function(){
console.log(this.value);
});
<强> EDITS 强>
完全错过了您想要在函数中返回值的问题。 @ jonasw的答案有效,但它太复杂了。夫妻更简单的方法。首先,您可以在外部范围内使用变量。
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="checkbox">
<div class='col-xs-3 col-md-2'>
<input type="radio" name="choose-age" id='wom-10-14 age' class='choose-age' value='10-14' checked /> <span class='text-left'>10-14</span>
</div>
<div class='col-xs-3 col-md-2'>
<input type="radio" name="choose-age" id='wom-15-19 age' class='choose-age' value='15-19' /> <span class='text-left'>15-19</span>
</div>
<div class='col-xs-3 col-md-2'>
<input type="radio" name="choose-age" id='wom-10-19 age' class='choose-age' value='10-19' /> <span class='text-left'>10-19</span>
</div>
</div>
var ageLabel = '10-14';
d3.selectAll(".choose-age")
.on("change", function(d){
ageLabel = this.value;
});
将始终拥有该值。
或者第二,如果你想要一个功能,只需选择值:
ageLabel
function ageLabel(){
return d3.select(".choose-age:checked").node().value;
}
setInterval(function(){
console.log(ageLabel());
}, 1000);
答案 1 :(得分:0)
为什么你的代码不起作用:
尝试1&amp; 3&amp; 4: Label是一个jquery元素,你的&#34;返回结果[0]&#34;将结果返回到jquery例程中。
Atempt2: 代码返回结果 now ,而结果将在某个地方设置。所以现在它是未定义的
怎么做: 同步(不推荐):
function ageLabel(){
while(true){
if(labelischecked){
break;
}
}
return result;
}
然而,这将阻止浏览器线程导致滞后并最终崩溃(糟糕!)
异步: 1.Callback:
function ageLabel(callback){
d3.selectAll(".choose-age") .on("change", function(d){callback(this.value);});
}
ageLabel((result)=>{
//age label checked, so now work with result
});
// thanks to mark
2.Promise:
function ageLabel(){
Return new Promise(function(resolve,reject){
d3.selectAll(".choose-age") .on("change", function(d){resolve(this.value); });
});
}
ageLabel().then((result)=>{
//do sth with result
});