首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用较少的代码创建jQuery函数

如何使用较少的代码创建jQuery函数
EN

Stack Overflow用户
提问于 2021-05-27 20:48:41
回答 4查看 52关注 0票数 0

我试图在jquery中创建一个函数。我有三个有三个按钮的盒子。当我点击一个按钮,然后一个盒子会显示,其他的盒子将被隐藏。另一个按钮也是一样的。

代码语言:javascript
代码运行次数:0
运行
复制
    $("#one").click(function () {
            $(".box1").show();
            $(".box2").hide();
            $(".box3").hide();
        });

        $("#two").click(function () {
            $(".box2").show();
            $(".box1").hide();
            $(".box3").hide();
        });
        $("#three").click(function () {
             $(".box3").show();
            $(".box1").hide();
            $(".box2").hide();
        });
代码语言:javascript
代码运行次数:0
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="box1" style="display:none">box one</div>
<div class="box2" style="display:none">box Two</div>
<div class="box3" style="display:none">box Three</div>


<button id="one" type="button">One</button>
<button id="two" type="button">Two</button>
<button id="three" type="button">Three</button>

我的问题是,是否有任何方法可以实现我的目标,而不重复相同的代码多次。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-05-27 20:55:06

有一种更简单的方法,您可以使用属性。

看看下面。

代码语言:javascript
代码运行次数:0
运行
复制
$(".container button").click(function(){
  var className = "."+ $(this).attr("target");
  $(".container div").hide() // hide all divs
  // now view the target one
  $(className).show();
});
代码语言:javascript
代码运行次数:0
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="box1" style="display:none">box one</div>
<div class="box2" style="display:none">box Two</div>
<div class="box3" style="display:none">box Three</div>

<button id="one" target="box1" type="button">One</button>
<button id="two" target="box2" type="button">Two</button>
<button id="three" target="box3" type="button">Three</button>
</div>

票数 2
EN

Stack Overflow用户

发布于 2021-05-27 20:58:07

下面是一种利用按钮的ID和div的ID来创建动态函数的方法

代码语言:javascript
代码运行次数:0
运行
复制
$(".button").click(function(e) {
  // set up the object to map stuff
  let obj = {
    'one': 'box1',
    'two': 'box2',
    'three': 'box3'
  };
  $(".box").hide();
  $("." + obj[e.target.id]).show();
});
代码语言:javascript
代码运行次数:0
运行
复制
.box {
  display: none;
}
代码语言:javascript
代码运行次数:0
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="box1 box">box one</div>
<div class="box2 box">box Two</div>
<div class="box3 box">box Three</div>


<button id="one" class='button' type="button">One</button>
<button id="two" class='button' type="button">Two</button>
<button id="three" class='button' type="button">Three</button>

票数 0
EN

Stack Overflow用户

发布于 2021-05-27 21:02:03

单击任何按钮时,隐藏所有消息。然后,只需显示其类中谁的索引与其组内按钮的索引相匹配的消息。

代码语言:javascript
代码运行次数:0
运行
复制
$("button").click(function (event) {
  // Hide all the messages
  $(".box").each(function(index, box){
    $(box).hide();
  });
  
  // Show just the message that applies
  $($(".box")[$("button").index(event.target)]).show();
});
代码语言:javascript
代码运行次数:0
运行
复制
.hidden { display:none; }
代码语言:javascript
代码运行次数:0
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="box hidden">box One</div>
<div class="box hidden">box Two</div>
<div class="box hidden">box Three</div>

<button type="button">One</button>
<button type="button">Two</button>
<button type="button">Three</button>

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

https://stackoverflow.com/questions/67729789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档