【问题标题】:Putting a href click function into a if-else-statement将 href click 函数放入 if-else-statement
【发布时间】:2010-11-19 21:16:44
【问题描述】:

我有这个功能

$("a[href*=/category/movies/]").click(function() {
so.addVariable('stretching','fill');
so.write('mediaspace');
});

我想变成一个 if...else 语句。

如何定位 div#header_playlist_categories 内的链接 如果链接指向 '/categories/movies/' 以外的内容,则应用 else 语句?

【问题讨论】:

    标签: jquery click href if-statement


    【解决方案1】:

    我认为您要做的是处理对div#header_playlist_categories 内的a 元素的所有点击。然后,如果链接的href 属性包含/category/movies/,则您想做一件事,如果不包含则做另一件事。如果是这样,您可以使用delegate() 很好地做到这一点:

    $('#header_playlist_categories').delegate('a', 'click', function(e) {
        e.preventDefault();  // I imagine you always want to disable the default action
    
        if (this.href.indexOf('/category/movies/') !== -1) {
            so.addVariable('stretching','fill');
            so.write('mediaspace');
        } else {
            // do whatever else you want to do
        }
    });
    

    【讨论】:

    • 感谢您提供的信息。我可能会再次使用它!
    【解决方案2】:

    您可以像这样使用:not() 来获取其他链接:

    $("#header_playlist_categories a:not([href*=/category/movies/])").click(function() {
      //something else
    });
    

    或者便宜一点,在循环中检查:

    $("a").each(function() {
     if(this.href.indexOf("/category/movies/") !== -1) {
       $(this).click(function() {
         so.addVariable('stretching','fill');
         so.write('mediaspace');
       });
     } else {
       $(this).click(function() {
         //something else
       });
     }
    });
    

    【讨论】:

      【解决方案3】:

      您应该将delegate that event 发送到您的div#header_playlist_categories

      在您的回调函数中,访问被点击链接的“href”属性并根据其值分支您的处理程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多