2012-01-12 50 views
1

我有.live方面现在工作,所以如果链接被点击,我的功能被执行,但我想弄清楚如何包括一个选项直接链接到内容以及。例如:jQuery IF var = value或#id点击

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

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

我的问题:如果两种情况都是真的,我该如何构造IF语句来执行?

任何人都可以帮忙吗?谢谢!

UPDATE:

所以我把中频部分从Graydot的答案,并把它应用到我的代码和这里是什么样子,现在更完整的示例:

$("#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的功能,但我为它含有“常见问题解答”,因为它应该在控制台已经验证。

任何人都看到我仍然失踪?

谢谢!

最后更新:SOLUTION

我起初并不理解,但解决方案被证明是重新考虑我的做法。我明白,有人可以看透我的无知,并提出了一个很好的解决方案。

这里是工作的代码示例:

$(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 = “#帮助”或从其他网页HREF =“http://mydomain.com一样简单/ mypage#faq“。无需解析变量的URL或使用IF语句来区分导航链接或外部链接。

希望这可以帮助别人,所以我不会觉得这么无知! ;)

+0

问题不清楚!请更清楚地解释一下。 – 2012-01-12 19:19:03

+0

更好吗? – 2012-01-12 19:26:16

+0

对不起,可以更清楚。请发布您正在使用的链接的html,以及您计划如何区分它是实况还是链接。 – 2012-01-12 19:37:15

回答

1

使用hashtag,也许?通过绑定到“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哈希值发生变化,hashchange事件就会立即触发。

+0

我的问题可能不够清楚。我真的只是想弄清楚如何将两种情况结合到一个IF语句中,所以如果任何一种情况都是这样的,我的代码就会变成exicutes。 – 2012-01-12 19:28:45

+0

为什么hashchange事件不适合您的需求? – Blazemonger 2012-01-12 19:34:22

+0

我想我对此不够了解。当我搜索hashchange时,我看到很多对jQuery Hashchange插件的引用。那是你正在使用的?在仔细研究你的答案时,我会发现它可能是更好的解决方案,无论链接是在同一页还是不同的页面上,对吗? – 2012-01-12 22:41:59

1

的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>