javascript - 单击单选按钮时更改文本

标签 javascript jquery

我在同一页面上多次列出了以下代码,并且我希望能够在单击单选按钮时在 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);
});

FIDDLE

关于javascript - 单击单选按钮时更改文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28042709/

相关文章:

javascript - CodeMirror:有没有办法通过单击 Esc 按钮来存在搜索模式

javascript - 简单函数中的"Uncaught SyntaxError: Unexpected token ( "

javascript - D3 根据单选按钮更改颜色和比例

需要 Javascript 正则表达式和转义建议

jquery - 裁剪器 JS : Positioning/size issue inside Bootstrap modal

jquery - 使用jquery将子菜单放入新的div中

javascript - 批量转换 IP 地址以查找位置

javascript - 如何立即开始 setInterval 循环?

javascript - 防止 jQuery 在生成 html 时执行分配给属性的函数

javascript - 即使在外部或网页上的任何地方单击也隐藏菜单