代码之家  ›  专栏  ›  技术社区  ›  mpen

选择具有特定get参数的所有链接?

  •  0
  • mpen  · 技术社区  · 14 年前

    例如,我想匹配所有具有 iframe 参数。因此,它将匹配:

    <a href="http://www.example.com?iframe">
    <a href="http://www.example.com?iframe=1">
    <a href="http://www.example.com?iframe&sortby=awesomeness">
    
    3 回复  |  直到 14 年前
        1
  •  7
  •   Nick Craver    14 年前

    你可以用一个 attribute-contains selector ,如下所示:

    $("a[href*='?iframe'], a[href*='&iframe']")
    

    这也会发现类似的情况:

    <a href="http://www.example.com?sortby=awesomeness&iframe">
    
        2
  •  1
  •   Steve G.    14 年前

    如果您使用jquery,它将是

    var iframeLinks = $("a[href*='iframe']")
    
        3
  •  0
  •   andres descalzo    14 年前

    如果搜索非常具体,可以创建一个新的选择器:

    (function($) {
    
      $.fn.tagName = function() {
        return this.get(0).tagName.toLowerCase();
      }
    
      $.expr[':'].inHRef = function(obj, index, meta, stack){
    
        if ($(obj).tagName() != 'a')
          return false;
    
        var afi = $(obj).attr('href').split('?'), sfi, txt = meta[3];
    
        if (afi.length == 1)
           return false;
    
        sfi = afi[1];
    
        // Regular Expression
    
        var rgCI = '\\'+sfi+'\\gi';
    
        // case-insensitive
        return (rgCI.match(txt));
    
        var rgCS = '\\'+sfi+'\\g';
    
        // case-sensitive
        //return (rgCS.match(txt));
    
        // IndexOf
    
        // case-insensitive
        //return ( sfi.toLowerCase().indexOf(txt.toLowerCase()) > -1);
    
        // case-sensitive
        //return ( sfi.indexOf(txt) > -1);
    
    };
    
    })(jQuery);
    
    $(function() {
    
        $('a:inHRef(iframe)').css('background-color', '#aaaaa0');
    
    });​
    

    example

    example update

    example end update