jQuery如果var=value或#id被单击

jQuery如果var=value或#id被单击,jquery,hash,if-statement,hyperlink,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的值 我的问题是:如果两种情况都

我现在有了.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覆盖它。。。谢谢格雷多特

现在,当单击链接时,div会像它应该显示的那样显示,但在输入URL时不会显示

例如:

我没有在这里包含填充变量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语句来区分导航链接和外部链接


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

也许可以使用标签?通过绑定到“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哈希发生更改时,就会立即触发哈希更改事件。

Jsfiddle here


一些内容
剧本应该是

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

$(文档).ready(函数(){
$('a').bind('click',函数(e){
//检查目标是否指向id,基本检查
var target=(/#\w+/).exec(this.href);//如果不匹配,则为null
如果(目标){
//防止默认行为
e、 预防默认值();
//jQuery切换。显示/隐藏div
$(目标[0]).toggle();
}
})
});    

问题不清楚!!!请解释清楚一点。对不起,可以解释清楚一点。请发布你正在使用的链接的html,以及你打算如何区分它是一个实时链接还是链接。我的问题可能还不够清楚。我只是想弄清楚如何将这两种情况组合成一个IF语句,这样,如果其中任何一种情况都是真的,我的代码就会出现。为什么hashchange事件不适合您的需要?我想我只是对它理解得不够。当我搜索hashchange时,我看到很多对jQuery hashchange插件的引用。你用的就是这个吗?仔细看看你的答案,我知道这可能是一个更好的解决方案,不管链接是在同一个页面上还是在另一个页面上,它都会起作用,对吧?请忽略我上面所显示的无知程度。你的解决方案规则!重量比我想做的要轻得多。感谢您消除了我的理解不足,并为我提供了更好的解决方案!
<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>