使用 jQuery 切换更改 html 代码

change html codes using jQuery toggle

我得到了一个定价 table,我打算在其中使用切换按钮 (monthly/yearly) 切换价格编号、link href 和时间间隔文本。我只是不知道如何让它开始工作。感谢任何帮助。

<select class="segment-select">
  <option value="1">Monthly</option>
  <option value="2">Yearly</option>
</select>
<div class="content1">
    $<span class="price">25<!-- show 250 when toggled!--></span> 
    <span class="interval">monthly <!-- show yearly when toggled!--></span>
    <a href="link1<!-- link1-alt when toggled!-->">Sign up</a>
</div>
<div class="content2">
    $<span class="price">45<!-- show 450 when toggled!--></span> 
    <span class="interval">monthly <!-- show yearly when toggled!--></span>
    <a href="link2<!-- link2-alt when toggled!-->">Sign up</a>
</div>

JSFiddle:http://jsfiddle.net/ttsqqcoy/

您应该使用 java 脚本来执行此操作

$('.segment-select').change(function(e) {
  if ($(".segment-select option:selected").val() == '1')
  {
    $('.content1').show();
    $('.content2').hide();
  } else {
    $('.content2').show();
    $('.content1').hide();
  }
})

如果这是您需要的?

这是一种方法,如何做到这一点(对原始代码进行的更改):

HTML:

<div class='contentTable'>
  <div class="content">
      <span class="price"></span> 
      <span class="interval"></span>
      <a class='link' href="#">Sign Up</a>
  </div>
  <div class="content">
      <span class="price"></span>
      <span class="interval"></span>
      <a class='link' href="#">Sign Up</a>
  </div> 
</div>

Javascript

$(".segment-select").Segment();

var options = {
    monthly: [
        {price: 25, link: 'link1'},
        {price: 45, link: 'link2'},
    ],
    yearly: [
        {price: 300, link: 'link3'},
        {price: 540, link: 'link4'},
    ]
}

function fillContent(interval) {
    var data = options[interval];

    $('.content').each(function(index) {
        var content = $(this);

        content.find('.price').text('$' + data[index].price);
        content.find('.interval').text(interval);
        content.find('.link').attr('href', data[index].link);
    });
}

// initialization 

fillContent("monthly");

$('.ui-segment').on("click", '.option', function() {
    var interval = $(this).attr('value');

    fillContent(interval);
});

这是 jsfiddle 上的例子:

http://jsfiddle.net/tara5/5kgw964L/

它应该可以解决您 table 中这两行的问题。

然而,如果你有两行以上,甚至不是固定数量的行,代码将变得混乱且难以维护。 (通常将数据保存在 DOM 中是不好的)。

所以你应该尝试使用 Backbone,例如。

以下是如何使用 Backbone (jsfiddle link) 解决您的问题:

http://jsfiddle.net/tara5/2r3t2Lrg/

另请参阅 Backbone 文档和示例。 (现在不能提供,不能post超过2links =))