我在同一页面上多次列出了以下代码,并且我希望能够在单击单选按钮时在 foo-title span 元素中显示 data-name 值。问题在于,由于 .foo-title span 在 DOM 中多次出现,因此文本会在各处更新,而不是在第一个位置更新。我尝试过多种方法,例如 .parent() .closest 。 prev() 但无法弄清楚。
标签采用背景图像样式,文本被隐藏,这就是为什么我想执行上述操作以向用户显示一些文本信息,以实现可访问性。
HTML
<div class="col-sm-4">
<p class="foo-title">
<span></span>
</p>
<ul class="foo-container-list">
<li class="foo-list-item">
<input class="foo-input" data-name="red" id="foo_id_1" name="foo_id" type="radio" value="1">
<label for="foo_id_1">red</label>
</li>
<li class="foo-list-item">
<input class="foo-input" data-name="green" id="foo_id_2" name="foo_id" type="radio" value="2">
<label for="foo_id_2">green</label>
</li>
<li class="foo-list-item">
<input class="foo-input" data-name="blue" id="foo_id_3" name="foo_id" type="radio" value="3">
<label for="foo_id_3">blue</label>
</li>
</ul>
</div>
JS
fooBar.updateFooName = function(foo) {
var fooName = foo.data('name');
if (fooName) {
$('.foo-title span').text(fooName);
}
};
$(document).ready(function() {
$("input[name=foo_id]:radio").change(function() {
fooBar.updateFooName($(this));
});
});
最佳答案
fooBar.updateFooName = function() {
var fooName = $(this).data('name');
if (fooName) {
$(this).closest('[class^="col-sm"]').find('.foo-title span').text(fooName);
}
};
$(document).ready(function() {
$("input[name=foo_id]:radio").change(fooBar.updateFooName);
});
关于javascript - 单击单选按钮时更改文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28042709/