【问题标题】:On one page click link to another page show div and expand div在一个页面上单击指向另一个页面的链接显示 div 并展开 div
【发布时间】:2015-06-07 17:53:09
【问题描述】:

在一页上我有这个:
(1) 迷你导航
(2) 迷你导航 (1) 中的每个链接在其下方显示或隐藏一个 div(想想标签)
(3) 在每个隐藏的 div (2) 中是另一个显示/隐藏 div 效果(想想手风琴)

在另一个页面上我想要这个:
* 单击该链接时,会转到上面的页面,导航到正确的隐藏“选项卡” (2),然后在手风琴 (3) 中展开(显示)一个 div。

问题
一切正常,但现在我想在另一个页面上实现一个链接,以显示第二个隐藏的 div 和一个手风琴。我不知道如何做到这一点。想法?想法?

FIDDLE
http://jsfiddle.net/zuhloobie/2jtqroLL/1/

这是我想要完成的图形:

用于显示其隐藏 DIV 的迷你导航链接之一的 HTML 触发器

<a href="#subDivTab1" class="subDivSwitchLink">overview</a>

用于迷你导航的 JQUERY DIV 开关

$(function(){
$('a.subDivSwitchLink').click(function (e) {
    var $this = $(this),
    containerSelector = $this.attr('href'),
    $links = $('a.subDivSwitchLink');
    e.preventDefault();
    $('div.subDivSwitch').not(containerSelector).hide();
    $(containerSelector).show();
    $links.not($this).toggleClass('subTitleActive', false);
    $this.toggleClass('subTitleActive', true);
});
var target = '#'+'subDivTab1';
$('a[href="'+target+'"].subDivSwitchLink').click();
});

隐藏手风琴的查询

        $(document).ready(function(){
        $('#drawer > ul > li:has(ul)').addClass("has-sub");
        $('#drawer > ul > li > a').click(function() {
            var checkElement = $(this).next();
            $('#drawer li').removeClass('active');
            $(this).closest('li').addClass('active');   
            if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
                $(this).closest('li').removeClass('active');
                checkElement.slideUp('normal');
            }
            if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
                $('#drawer ul ul:visible').slideUp('normal');
                checkElement.slideDown('normal');
            }
            if (checkElement.is('ul')) {
                return false;
            } else {
                return true;    
            }       
        });
    });

带有手风琴的隐藏 DIV 之一的 HTML

<div id="subDivTab2" class="subDivSwitch">
<div class="subRightSectionTitle soft">hidden div title2
</div>
<div class="subRightSectionText ulineGray"><span class="subRightSectionTextHeader">hidden div text2</span>
</div>
<div id="drawer" class="softDrawer">
    <ul>
        <li><a href="#" onclick="return false;">hidden accordion title1</a>
            <ul>
                <li>hidden accordion text1</li>
            </ul>
        </li>
        <li><a href="#" onclick="return false;">hidden accordion title2</a>
            <ul>
                <li>hidden accordion text1</li>
            </ul>
        </li>
    </ul>
</div>

【问题讨论】:

  • 很酷的故事兄弟。你的问题是什么?
  • 兄弟,是的 - 忘了那部分。我不知道该怎么做,有人有什么想法吗? [原谅我的假设是直观的明显问题;)]
  • 你能做一个小提琴吗?
  • 我会尝试...请保持 :) 很多代码来简化...

标签: jquery html css


【解决方案1】:

当用户点击链接时只做查询字符串添加查询字符串到第1页的链接

<a href="page2.html?showdiv=true">page2</a>

在第一页读取查询字符串

<script>
function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
$( document ).ready(function() {
   if(getParameterByName('showdiv')=="true")
   {
         //show div and link.
   }
});
</script>

【讨论】:

  • 我的问题是我不明白如何链接到特定的隐藏部分(在我的情况下为“sublink 2”,以及打开特定的手风琴(在我的情况下为“accordion2 标题” )...以及如何合并 jquery 代码来完成这些参数。见小提琴:jsfiddle.net/zuhloobie/2jtqroLL/1
【解决方案2】:

有几种方法可以通过链接传递所需的参数。您可以使用 cookie,或者我使用的一种方法,即附加到链接 url 作为查询参数。例如,创建您的链接并添加 ?tab=3。目标页面需要一个查询字符串解析器脚本来获取供您使用的内容,例如您的要求:'导航到正确的隐藏“选项卡”,然后在手风琴中展开(显示)一个 div'。

// plain vanilla javascript - to test, try pasting in Chrome console, append some parameters to your URL, for example: mypage.html?nav=4&accordian=7 

    function getURLparams(paramName) {
      var sURL = window.document.URL.toString();
      if (sURL.indexOf("?") > 0) {
        var arrParams = sURL.split("?");
        var arrURLParams = arrParams[1].split("&");
        var arrParamNames = new Array(arrURLParams.length);
        var arrParamValues = new Array(arrURLParams.length);
        var i = 0;
        for (i = 0; i < arrURLParams.length; i++) {
          var sParam =  arrURLParams[i].split("=");
          arrParamNames[i] = sParam[0];
          if (sParam[1] != "") {
            arrParamValues[i] = unescape(sParam[1]);
          } else {
            arrParamValues[i] = "no values";
          }
        }
        for (i = 0; i < arrURLParams.length; i++) {
          if(arrParamNames[i] == paramName){
            return arrParamValues[i];
          }
        }
        return "no parameters";
      }
    }
   
   var navTarget = getURLparams('nav')
   var accTarget = getURLparams('accordian')
   
   // Now you can change nav 2 style and open accordian 3:
   //  var sLink = '#subLink' + navTarget;
   //  var sDivTab = '#subDivTab' + accTarget;
   //  sLink.css('font-size','24px');
   //  sDivTab.show();
<!-- URL with parameter queries -->
<a href="http://www.example.com/targetPage.html?nav=2&accordian=3">Link to nav 2 and accordian 3</a>

【讨论】:

  • 我想我跟着 - 危险地接近于超出我的知识。我真的很喜欢你展示的查询参数的想法。我了解您指向 nav2 和手风琴 3 的链接 - 但是如何在目标页面上分配这两个参数以便链接知道去哪里?
  • 不确定你是否看到我最近添加的小提琴:jsfiddle.net/zuhloobie/2jtqroLL/1
  • @chris - 看看示例中注释掉的 jquery 代码和之前的 2 个变量。例如。如果 navTarget 由于 URL 包含 ?nav=3 而返回“3”,那么您可以使用它来附加到您的 jquery 元素并定位它。所以 var sLink = '#subLink' + navTarget; if (sLink == #subLink3) 然后改变css:sLink.css('font-size','24px');
  • 对不起 - 无意冒犯你,但我就是不明白。我了解链接参数背后的逻辑。我理解我们正在努力做的事情。我知道 ?nav 会带你到正确的选项卡,而 ?accordion 会带你到正确的手风琴。我只是不明白如何在我的特定代码中连接这些点。如您所见,我不是最高级的 jquery/js 编码器,也没有受过正规培训。但我在学习。这就像西班牙语。我可以理解其中的很多内容并会说一点,但如果我被扔进墨西哥,我只会困惑地盯着太空。这感觉就像墨西哥。
  • 在某处是否有类似的例子可以证明这一点?我知道你们都不喜欢“现在就为我做”的事情,这不是我的本意。我是视觉的,所以也许这会帮助我理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 2013-11-02
  • 2016-11-28
相关资源
最近更新 更多