0

我正在使用 :regex 库(在此处找到)来选择 ID 以 P 开头并且之后至少有 5 位数字的元素。然后,我使用 .attr 添加一些属性。

$(document).ready(function() {
$('img:regex(id,P[0-9][0-9][0-9][0-9]+)').attr("onmouseover", "show\(this\,2\,0\)");
$('img:regex(id,P[0-9][0-9][0-9][0-9]+)').attr("onmouseout", "hide\(this\)");
});

这适用于 Firefox,但不适用于 Chrome。(尚未测试 IE。)

我尝试使用 [0].setAttribute 代替,它在一定程度上起作用,但由于某种原因,它只选择了正则表达式的第一个实例。

有没有人有更兼容的解决方案?

4

6 回答 6

4

无论那个插件做什么,它看起来都非常慢。我宁愿建议选择所有图像节点,然后使用 jQuery .filter()help过滤它们,这必须更快,我认为它仍然更具可读性。可能看起来像:

$('img').filter(function(index) {
    return this.id.charAt(0) === 'P' && !isNaN(this.id.slice(1,6));
}).hover(function() {
     $(this).show();
}, function() {
     $(this).hide();
});

演示: http: //www.jsfiddle.net/snMCM/

性能基准:http: //jsperf.com/regex-vs-jquery-filter

于 2011-02-07T21:26:51.970 回答
3

除了正则表达式,您应该使用 jQuery.hover()函数,而不是.attr()函数。我已经合并了.hover()函数以及提供的正则表达式kirilloid

$(document).ready(function() {
    $('img:regex(id, P\d{5,})').hover(function(){
        show( $(this), 2, 0);
    }, function(){
        hide( $(this) );
    });
});
于 2011-02-07T21:22:29.557 回答
0

我不确定您是否可以使用 attr 附加 javascript 处理程序,但这听起来像是一个很长的路要走。试一试:

$('img:regex(id,P[0-9][0-9][0-9][0-9]+)').hover(function() {
    show(this,2,0);
},function() {
    hide(this);
}); 
于 2011-02-07T21:24:04.120 回答
0

我知道它并没有真正回答你的问题,但是......

向要选择的元素添加一个类。

于 2011-02-07T21:30:32.277 回答
0

为什么不直接使用filter()而不是:regex库?这应该适用于所有浏览器。例如

var $imgs = $('img').filter(function(){return this.id.match(/^P\d\d\d\d\d/);});
$imgs.attr("onmouse.......
于 2011-02-07T21:41:22.150 回答
0

试试这个:(在所有浏览器中工作)

        $(window).load(function () {
        //your script or function

                    $("your_html_tag").attr({
                            width : "your-width",
                            height : "your-height",
                            alt: "Online Teacher"
                        });
        });

而不是

        $(document).ready(function () {
       //your script or function

                    $("your_html_tag").attr({
                            width : "your-width",
                            height : "your-height",
                            alt: "Online Teacher"
                        });
        });
于 2011-05-14T06:43:34.337 回答