【问题标题】:jQuery IF var = value or #id clickedjQuery IF var = value 或 #id clicked
【发布时间】:2012-02-09 02:04:34
【问题描述】:

我现在有 .live 方面的工作,所以如果点击链接,我的功能就会被执行,但我试图弄清楚如何包含一个直接链接到内容的选项。像这样的:

$(showDiv).is('shipping-timeline')
or
$("#inm_if_hc_shipping_timeline").live('click', function() {
  [code to show and hide divs]            
});

showDiv 包含标识正确 id 的值,从 URL 中提取。

我的问题:如果任一情况为真,我如何构造要执行的 IF 语句?

有人可以帮忙吗?谢谢!

更新:

所以我从 Graydot 的答案中提取了 IF 部分并将其应用到我的代码中,这是一个更完整的示例,说明它现在的样子:

$("#inm_if_hc_faq").bind('click', function(e) {
    if(showDiv == 'faq') {
            // prevent default behavior
            e.preventDefault();

            $("#inm_if_hc_content_faq").show("slow");   
            $("#inm_if_hc_content_shipping_timeline").hide("fast");
    }

        });

我缺少的最重要的部分是具有默认行为和覆盖它的 IF...感谢 Graydot!

现在,当点击链接时,div 会按原样显示,但在输入 URL 时不会显示。

示例:http://myurl.com/thispage.html?show=faq

我没有在此处包含填充变量 showDiv 的函数,但我已在控制台中验证它包含应有的“常见问题解答”。

有人看到我还缺少什么吗?

谢谢!

最终更新:解决方案

一开始我并不理解它,但事实证明解决方案是重新思考我的方法。我很感激有人能看穿我的无知并想出了一个很好的解决方案。

这是工作代码示例:

$(window).bind('hashchange', function () {
    var hval = location.hash.slice(1);

    if (hval == "faq") {
        $("#inm_if_hc_content_faq").show("slow");   
                    $("#inm_if_hc_content_shipping_timeline").hide("fast");
    }
});

$(document).ready(function() {

    $(window).trigger('hashchange');

});

有了这个,链接可以像 href="#faq" 或来自另一个页面 href="http://mydomain.com/mypage#faq" 一样简单强>。无需解析变量的 URL 或使用 IF 语句来区分导航链接或外部链接。

希望这对其他人有所帮助,这样我就不必感到如此无知了! ;)

【问题讨论】:

  • 问题不清楚!!!请解释清楚一点。
  • 对不起,可以更清楚。请发布您正在使用的链接的 html,以及您打算如何区分它是实时链接还是链接。

标签: jquery hash if-statement hyperlink


【解决方案1】:

也许可以使用主题标签?通过绑定到“hashchange”事件而不是“click”事件,你应该能够得到你想要的结果。

// run specific code based on the url hash
$(window).bind('hashchange', function () {
    var hval = location.hash.slice(1);
    if (hval == "timeline") {
        // run whatever code or function you like
    }
});

// trigger it on page load
$(document).ready(function () {  
    $(window).trigger('hashchange'); 

});

现在只需让您的可点击链接看起来像

<a href="#timeline">click me</a>

你有一个可点击、可收藏的 JavaScript 函数。每当 URL hash 发生变化时,hashchange 事件就会立即被触发。

【讨论】:

  • 我的问题可能不够清楚。我真的只是想弄清楚如何将这两种情况组合成一个 IF 语句,以便如果任何一种情况为真,我的代码就会执行。
  • 为什么 hashchange 事件不能满足您的需求?
  • 我想我只是不太了解它。当我搜索 hashchange 时,我看到很多对 jQuery Hashchange 插件的引用。那是你正在使用的吗?在仔细查看您的答案后,我发现它可能是一个更好的解决方案,并且无论链接是在同一页面上还是在不同页面上,它都可以工作,对吧?
  • 请忽略我上面显示的无知的深度。您的解决方案规则!比我尝试做的要轻得多。感谢您克服我的缺乏理解并给我一个更好的解决方案!
【解决方案2】:

Jsfiddle 在这里http://jsfiddle.net/xff82/

<body>
  <a href="#target_div">Toggle</a>
  <div id="target_div">Some content</div>
</body>

脚本是

<script type="text/javascript">
  $(document).ready(function(){
    $('a').bind('click', function(e){
      // check that target points to a id, rudimentary check
      var target = (/#\w+/).exec(this.href); // null if does not match
      if (target){
        // prevent default behavior
        e.preventDefault();
        //jQuery toggle. show/hide div
        $(target[0]).toggle();
      }
    })
  });    
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多