【问题标题】:Bootstrap 3 group-button behaviorBootstrap 3 组按钮行为
【发布时间】:2021-11-06 03:17:00
【问题描述】:

我有带有标签和单选按钮的常规组按钮行为:

<div class="btn-group" data-toggle="buttons">
  <label class="btn" id="lblAct1">
    <input type="radio" value="Val1">
    Act1
  </label>
  <label class="btn" id="lblAct2">
    <input type="radio" value="Val2">
    Act2
  </label>
  <label class="btn" id="lblAct3">
    <input type="radio" value="Val3">
    Act3
  </label>
</div>

当我使用按钮组的$("#lblAct1").html(getTranslation("ACT1")) 元素更改标签标题时,会根据需要停止行为(按下的项目变为活动状态,其他项目不活动)

请帮忙。

【问题讨论】:

    标签: jquery asp.net buttongroup


    【解决方案1】:

    问题是因为html() 覆盖了目标元素中的所有 内容,而不仅仅是文本节点。此外,由于您处理的是文本内容而不是 HTML,您可以使用text() 方法来帮助防止 XSS 攻击。

    另请注意,假设这些无线电输入是相关的,它们需要具有相同的name 属性才能正确分组。

    针对您的情况的简单解决方法是将文本节点放置在另一个元素中,例如 span,然后设置该元素的 text()

    let getTranslation = input => input + ' translation here...';
    
    $("#lblAct1 span").text(getTranslation("ACT1"))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="btn-group" data-toggle="buttons">
      <label class="btn" id="lblAct1">
        <input type="radio" value="Val1" name="foo" />
        <span>Act1</span>
      </label>
      <label class="btn" id="lblAct2">
        <input type="radio" value="Val2" name="foo" />
        <span>Act2</span>
      </label>
      <label class="btn" id="lblAct3">
        <input type="radio" value="Val3" name="foo" />
        <span>Act3</span>
      </label>
    </div>

    还请注意,您可以通过直接从 DOM 向 getTranslation() 函数提供元素文本来使您的翻译代码完全动态化,而不是对其进行硬编码,并附加 N 个方法调用:

    let getTranslation = input => input + ' translation here...';
    
    $(".translatable span").text((i, t) => getTranslation(t))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="btn-group" data-toggle="buttons">
      <label class="btn translatable">
        <input type="radio" value="Val1" name="foo" />
        <span>Act1</span>
      </label>
      <label class="btn translatable">
        <input type="radio" value="Val2" name="foo" />
        <span>Act2</span>
      </label>
      <label class="btn translatable">
        <input type="radio" value="Val3" name="foo" />
        <span>Act3</span>
      </label>
    </div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 2013-08-02
      • 2014-04-24
      • 1970-01-01
      • 2017-09-01
      • 2013-08-25
      • 1970-01-01
      • 2014-09-20
      相关资源
      最近更新 更多