jQuery IF var = value或#id clicked

时间:2012-01-12 19:14:04

标签: jquery hash if-statement hyperlink

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

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

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

我的问题:如果两种情况都属实,我如何构造要执行的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的函数,但我已在控制台中验证它包含'faq'应该。

有人看到我仍然缺少的东西吗?

谢谢!

最终更新:解决方案

起初我并不理解,但解决方案证明是重新思考我的方法。我很欣赏有人可以看透我的无知并想出一个很好的解决方案。

这是工作代码示例:

$(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语句来区分导航链接或外部链接。

希望这有助于其他人,所以我不必感到如此无知! ;)

2 个答案:

答案 0 :(得分: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哈希发生变化时,哈希变换事件将立即被触发。

答案 1 :(得分: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>