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

时间:2013-03-13 19:58:49

标签: javascript jquery

我有一个脚本在页面上显示/隐藏多个独立的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:

<div>
    <a href="#" onclick="toggleOptions(this);" style="display:block;">
        show
     </a>
      <div class="toggleOptions" style="display: none">
        ITEM 1 OPTIONS
     </div>
</div>
<div>
    <a href="#" onclick="toggleOptions(this);" style="display:block;">
        show
     </a>
      <div class="toggleOptions" style="display: none">
        ITEM 2 OPTIONS
     </div>
</div>
<div>
    <a href="#" onclick="toggleOptions(this);" style="display:block;">
        show
     </a>
      <div class="toggleOptions" style="display: none">
        ITEM 3 OPTIONS
     </div>
</div>

这是作品http://jsfiddle.net/YE6XZ/1/

的一个小问题

3 个答案:

答案 0 :(得分:1)

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

<a class="show" href="#" onclick="toggleOptions(this);" style="display:block;">show</a>

然后将其添加到您的jQuery:

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

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

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

onclick="return toggleOptions(this);"

因为你已经回复了假。的 jsFiddle example

答案 1 :(得分:0)

我相信您也可以使用.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;
}

除非我误解了你想做的事情......

答案 2 :(得分:0)

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

<a href="javascript:void(0)">Show</a>