单击单选按钮时更改文本

时间:2015-01-20 10:12:55

标签: javascript jquery

我在同一页面上多次列出了以下代码,并且我希望能够在单击单选按钮时在foo-title span元素中显示数据名称值。问题是因为 .foo-title span 在DOM中多次,文本在任何地方都在更新而不是在1位置。我尝试了几种方法,如.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));
  });
});

1 个答案:

答案 0 :(得分:4)

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