【问题标题】:how to hide and show one button after clicked on another button?单击另一个按钮后如何隐藏和显示一个按钮?
【发布时间】:2016-03-02 04:48:39
【问题描述】:

我将在一页中使用两个按钮。就像当我们点击第一个按钮时,第二个按钮将出现在第一个按钮上,如果我们点击第二个按钮,则会出现第一个按钮。不会失去按钮的功能。

这是我的按钮代码:

<button id="button1" onclick="menu2.toggle()" class="sideviewtoggle myButton">Test 1</button>
<button id="button2" onclick="menu3.toggle()" class="sideviewtoggle myButton">Test 2</button>

例如:

Test 1是默认的,test 2是隐藏的,如果我们点击test 1然后test 1 将消失,而 test 2 将出现,如果我们再次点击 test 2 然后它将消失,而 test 1 将出现了。不失这两个按钮的onclick功能。

这是我的切换菜单功能,如果我们点击测试 1 按钮然后这个页面:togglemenu.php 将打开,如果我们点击测试 2,然后 togglemenu2.php 也会打开。

jQuery(function(){
menu2 = new sidetogglemenu({  
id: 'togglemenu2', 
position: 'right',
source: 'togglemenu.php', 
revealamt: -5
})

jQuery(function(){
menu3 = new sidetogglemenu({  
id: 'togglemenu3', 
position: 'right',
source: 'togglemenu2.php', 
revealamt: -5
})

如何制作?

提前致谢。

【问题讨论】:

  • document.getElementById('yourButtonId').style.display='none'; 隐藏 document.getElementById('yourButtonId').style.display=''; 显示
  • 这只是用于显示和隐藏按钮,我需要一个在点击后隐藏和显示的功能。是否可以按类获取元素?

标签: javascript jquery button buttonclick


【解决方案1】:

在不丢失按钮功能的情况下,我假设您的意思是要保留菜单切换。您需要做的是定义自己的功能,并在该功能内,切换您的菜单并执行您想要的显示/隐藏。

假设您是 javascript 新手,我写这个例子是为了直截了当。

//With a function, I am able to perform multiple tasks 
function SwitchButtons(buttonId) {
  var hideBtn, showBtn, menuToggle;
  if (buttonId == 'button1') {
    menuToggle = 'menu2';
    showBtn = 'button2';
    hideBtn = 'button1';
  } else {
    menuToggle = 'menu3';
    showBtn = 'button1';
    hideBtn = 'button2';
  }
  //I don't have your menus, so this is commented out.  just uncomment for your usage
  // document.getElementById(menuToggle).toggle(); //step 1: toggle menu
  document.getElementById(hideBtn).style.display = 'none'; //step 2 :additional feature hide button
  document.getElementById(showBtn).style.display = ''; //step 3:additional feature show button


}
<button id="button1" onclick="SwitchButtons('button1');" class="sideviewtoggle myButton">Test 1</button>
<button id="button2" onclick="SwitchButtons('button2');" class="sideviewtoggle myButton" style='display:none;'>Test 2</button>

【讨论】:

  • 您的代码很好,但是您使用了 SwitchButtons onclick 功能,如何保留我的 onlclick 功能,我的意思是如何将 menu2.toggle() 和 menu3.toggle() 添加到您的代码中?
  • 它在里面,看注释掉的那一行(我注释掉是因为我没有那些菜单,所以会出现脚本错误)
  • 实际上现在隐藏和显示运行良好,但我的 onclick 功能不起作用。这就是为什么。
  • 您也可以发布您的菜单 html 吗?
  • 谢谢,现在运行良好,我添加了这样的 onlick 函数: onclick=\"menu2.toggle() , SwitchButtons('button1');\"
【解决方案2】:

您可能会考虑的另一种可能性是,您可以使用 JavaScript 动态更改按钮的外观和功能,而不是隐藏/取消隐藏按钮。

function toggle(ev) {
  ev.target.dataset.state = ev.target.dataset.state === 'menu1' ? 'menu2' : 'menu1';
  ev.target.textContent = ev.target.textContent === 'Test 1' ? 'Test 2' : 'Test 1';
  if (ev.target.dataset.state === 'menu1') {
    // Add code to display Menu 1 here.
  } else if (ev.target.dataset.state === 'menu2') {
    // Add code to display Menu 2 here.
  }
}

document.querySelector('button').addEventListener('click', toggle);
&lt;button type=button name=toggleButton data-state=menu1&gt;Test 1&lt;/button&gt;

隐藏或显示不同菜单的方式也可以采用类似的方法。所以你可以有一个toggleButton 函数,并在该函数内部调用一个toggleMenu 函数。

【讨论】:

  • 你用什么库来做这个?它在 html 页面上不起作用,我添加了最新的 j 查询 2.1.1 但不起作用。
  • 页面前面还有其他按钮吗?查询选择器可能会将侦听器添加到其中。尝试给按钮一个 id 并让 queryselector 以该 id 为目标。
  • 该页面上只有两个按钮,test1 和 test2,我为每个按钮添加了 ID id="button1" 和 id="button2",隐藏和显示按钮应基于读取ID 不是 onlick 功能,因为您可以在上面的@dwhieb 中看到,onlick 功能无法正常工作
  • 澄清一下,我的建议是只使用 1 个按钮,而不是 2 个。每次单击该按钮时,它都会改变它的显示方式。此外,如果您使用的是addEventListener,请确保您没有使用onclick= 属性。
【解决方案3】:

我认为如果您使用 Jquery 最好创建一个隐藏的 css 类

.hidden {
  display: none;
}

并使用方法.addClass() or .removeClass()删除或添加

例子:

html 文件:

<button id="hideMenu" class="sideviewtoggle myButton">Test 1</button>

js文件

$('#hideMenu').on('click', function() {
  $('#menu-to-hide').addClass('hidden');
  //or
  $('#menu-to-show').removeClass('hidden');
});

【讨论】:

  • 能否给我一个在jquery中使用css的例子?如何在jquery中使用addclass和removeclass?
猜你喜欢
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2023-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多