使用jqTransform的锚标记的jQuery问题

时间:2010-05-08 03:44:43

标签: jquery internet-explorer

我在我的网站上使用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不喜欢click事件。有人可以帮我这个吗?

如果我调试代码,我可以看到该项是一个选择而不是像我期望的那样的锚,这让我更加困惑。

1 个答案:

答案 0 :(得分:2)

IE似乎没有正确执行$('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");