首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用jQuery显示/隐藏元素,同时更改切换链接的文本

使用jQuery显示/隐藏元素,同时更改切换链接的文本
EN

Stack Overflow用户
提问于 2015-06-05 13:10:58
回答 2查看 562关注 0票数 1

我现在已经花了大约6个小时来尝试让它工作,并且已经尝试了大约40种不同的jQuery代码变体,但没有成功,所以你可以想象到,现在开始对此感到头疼……

示例(精简) HTML:-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="price-info">
    <span class="price-including-tax">
        <span class="price">£100</span>
    </span>

    <span class="price-excluding-tax">
        <span class="price">£50</span>
    </span>
</span>

<span class="toggle">(Show ex VAT price)</span>

我只想在单击链接(.toggle)时切换ex VAT价格的显示,并更改流程中的文本。

我尝试过jQuery .toggle,.addClass,.removeClass,.show,.hide --各种各样的!

我当前的jQuery脚本如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          $j('.price-info .price-excluding-tax').hide();
            $j('.toggle').click(function() {
              var link = $j('.toggle');
                $j('.price-info .price-excluding-tax').toggle(function() {
                  if ($j('.toggle').is(":visible")) {
                    link.text('Show inc VAT price');
                  } else {
                    link.text('Show ex VAT price');
                  }
                });
            });

这是目前功能的一半,因为它将显示不含增值税的价格,但立即“滑回”视野。当我说幻灯片时,上面的.toggle函数创建了一个进入和退出的过渡,这样当切换被点击时,.price-excluding-tax - <span>将被带进/带出视图,带有宽度,高度和不透明度的过渡,而我只是想要一个简单的display: block / display:none;,比如this。似乎一旦你将一个函数附加到.toggle,它的功能就不同了。

我怀疑不含增值税的价格可能会立即滑回视线之外,因为我默认会用$j('.price-info .price-excluding-tax').hide();将其隐藏起来,我不知道。

我真的不关心我现在是否保留上面的内容,我只需要一些可以工作的东西,那就是显示ex VAT价格(同时隐藏Inc.增值税价格,并同时更改切换文本。

在有人问我要jsFiddle之前,我已经created one了,.toggle运行得很好,正如我所希望的那样--它只是不能在有问题的网站上工作(所以可能会有一些干扰,控制台中没有错误)。不过,小提琴并不处理文本的变化。

EN

回答 2

Stack Overflow用户

发布于 2015-06-05 13:20:45

您的问题有两种可能的解决方案:

解决方案1:

为文本使用2个div,并切换这些..如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span class="toggleText">(Show ex VAT price)</span>
<span class="toggleText" style="display:none;">(Show inc VAT price)</span>

使用jquery:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$j('.toggle').click(function() {
    $j('.price-info .price-excluding-tax').toggle();
    $j('.toggleText').toggle();
});

jsFiddle

解决方案2:

改进您当前的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$j('.price-excluding-tax').toggle(function() {
    if ($j('.price-excluding-tax').is(":visible")) {
       $j(".toggle").text('Show inc VAT price');
    } else {
       $j(".toggle").text('Show ex VAT price');
    }
});

jsFiddle

票数 0
EN

Stack Overflow用户

发布于 2015-06-05 21:23:03

你不需要javascript来做这件事。对于这个问题,有一个Pure CSS解决方案。

我已经将两个标签连接到一个用作切换按钮的复选框。一个标签使复选框起到切换按钮的作用,另一个标签显示/隐藏适当的价格。

试试下面的代码片段。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.price {
  font-family: "Roboto Slab", serif;
  font-size: 25px;
}
.price::before {
  content: "£";
  float: left;
  margin-top: 5px;
  margin-right: 5px;
}
.price span {
  width: 60px;
  float: left;   
  margin-top: 5px; 
  text-align: right;
}

input#chkTax {
  position: absolute;
  margin-left: -9999px;
  visibility: hidden;
}
input#chkTax + label {
  padding: 2px;
  width: 120px;
  height: 40px;
  cursor: pointer;
}
input#chkTax + label:before,
input#chkTax + label:after {
  display: inline-block;
  position: absolute;
  width: 120px;
  height: 40px;
  left: 100px;
  color: #fff;
  font-family: "Roboto Slab", serif;
  font-size: 20px;
  text-align: center;
  line-height: 40px;
  border-radius: 3px;
  border: 2px solid #ddd;
}
input#chkTax + label:before {
  background-color: #dddddd;
  content: attr(data-off);
  transition: transform 0.5s;
  backface-visibility: hidden;
}
input#chkTax + label:after {
  background-color: #8ce196;
  border-color: #6cc176;
  content: attr(data-on);
  transition: transform 0.5s;
  transform: rotateY(180deg);
  backface-visibility: hidden;
}
input#chkTax:checked + label:before {
  transform: rotateY(180deg);
}
input#chkTax:checked + label:after {
  transform: rotateY(0);
}

input#chkTax + label:hover:before {
    border-color: #bbb;
    background-color: #ccc;
}
input#chkTax + label:hover:after {
    border-color: #1ca136;
    background-color: #7cd186;
}


input#chkTax:checked + label + label .withtax,
.withouttax {
    display: block;
}
input#chkTax:checked + label + label .withouttax,
.withtax {
    display: none;
}

.price-info {
  -webkit-user-select: none;  /* Chrome all / Safari all */
  -moz-user-select: none;     /* Firefox all */
  -ms-user-select: none;      /* IE 10+ */
  user-select: none;          /* Likely future */     
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="price-info">
    <input type="checkbox" id="chkTax" />
    <label for="chkTax" class="cool-button" data-on="includes tax" data-off="excludes tax"></label>
    <label for="chkTax" class="price">
        <span class="withtax">
            1,000
        </span>
        <span class="withouttax">
            900
        </span>
    </label>
</div>

阅读更多信息:

可以在here找到一篇关于可以做什么的很好的文章

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30667422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文