使用javascript显示/隐藏div而不刷新页面

我有一个脚本,在页面上显示/隐藏多个独立的div。 问题是当你点击显示一个div时,无论页面在哪里,它都会自动关注第一个div。 有没有办法专注于显示的div?

这是javascript:

function toggleOptions(e) { var ele = e; var text = e.parentElement.querySelector('.toggleOptions') if(text.style.display == "none") { //ele.style.display = "none"; text.style.display = "block"; text.innerHTML = "TESTING"; ele.innerHTML = "hide"; } else { text.style.display = "none"; //text.innerHTML = "Hide GPS"; ele.innerHTML = "show"; } return false; } 

这是html:

 
show
ITEM 1 OPTIONS
show
ITEM 2 OPTIONS
show
ITEM 3 OPTIONS

这是http://jsfiddle.net/YE6XZ/1/的工作方式

为您的节目链接提供一个类,例如:

 show 

然后将其添加到您的jQuery:

 $('a.show').click(function(e){ e.preventDefault(); }); 

书签锚点( href="#" )的默认操作是跳转到页面顶部。 这样可以防止这种情况 jsFiddle示例

另一种无jQuery的方法是将你的onclicks更改为:

 onclick="return toggleOptions(this);" 

因为你已经回归假。 jsFiddle示例

我相信你也可以使用.focus()方法来专注于给定的元素。 在你的例子中:

 function toggleOptions(e) { var ele = e; var text = e.parentElement.querySelector('.toggleOptions') if(text.style.display == "none") { //ele.style.display = "none"; text.style.display = "block"; text.innerHTML = "TESTING"; text.focus(); //This should give focus to the newly shown text element ele.innerHTML = "hide"; } else { text.style.display = "none"; //text.innerHTML = "Hide GPS"; ele.innerHTML = "show"; } return false; } 

除非我误解你要做什么….

在href中使用javascript:void(0)。 使用javascript函数显示或隐藏使用id

 Show