代码之家  ›  专栏  ›  技术社区  ›  James Helms

使用jqTransform的带有锚标记的jQuery问题

  •  1
  • James Helms  · 技术社区  · 16 年前

    我正在我的网站上使用jqTransform。当用户处于允许他们使用热键移动选择的位置时。我添加了这个函数:

    $wrapper.find('a').keydown(function (e) {
    
                var Esc = 27;
    
                var code = (e.keyCode ? e.keyCode : e.which);
    
                if(code== Esc || (code>=65 &&code<=90)){
                    var letter = String.fromCharCode(code);
    
                    if (code==Esc)
                        keyCodes = "";
                    else{
    
                        if (keyCodes=='')
                            keyCodes += letter;
                        else
                            keyCodes += letter.toLowerCase();
    
    
    
                        var item = $wrapper.find('a[text^=\'' + keyCodes + '\']:first');
    
                        item.click();
                    }
                }
            });
    

    在$.fn.jqTransselect内。

    这段代码在所有浏览器中都可以正常工作,但是IE。我唯一能找到的就是IE不喜欢单击事件。有人能帮我吗?

    如果调试到代码中,我会发现该项是一个select,而不是我所期望的锚,这会使我更加困惑。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Chizh    15 年前

    好像不执行 $('a[text^=\'' + keyCodes + '\']:first') 正确选择

    仔细看看 contains selector . 注释处的包含选择器有一些变体。

    我使用regexcontains选择器

    $.expr[':'].regexcontains = function(obj, index, meta, stack){
    return (obj.textContent || obj.innerText || jQuery(obj).text() || '').search(new RegExp(meta[3], "ig")) >= 0;
    

    作为

    var item = $wrapper.find("a:regexcontains('^" + keyCodes + "'):first");