JQuery .attr 在 Chrome 中不起作用

发布于 2024-10-16 05:05:23 字数 528 浏览 3 评论 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 代替,它在一定程度上有效,但由于某种原因它只选择正则表达式的第一个实例。

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

I'm using a :regex library (found here) to select elements that have IDs starting with P and having at least 5 digits afterward. Then, I use .attr to add on some attributes.

$(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\)");
});

This works in Firefox, but not Chrome. (Haven't tested IE yet.)

I tried using [0].setAttribute instead, and it works to an extent, but then for some reason it only selects the first instance of the regex.

Does anyone have a more compatible solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

云雾 2024-10-23 05:05:23

无论该插件做什么,它看起来都非常慢。我宁愿建议选择所有图像节点,然后使用 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/< /a>

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

Whatever that plugin does, it looks terribly slow. I would rather recommend to select all image nodes and then filter them with jQuery .filter()help, this has to be faster and I think it's still more readable at all. Could look like:

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

Demo: http://www.jsfiddle.net/snMCM/

Performance benchmark: http://jsperf.com/regex-vs-jquery-filter

妳是的陽光 2024-10-23 05:05:23

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

$(document).ready(function() {
    $('img:regex(id, P\d{5,})').hover(function(){
        show( $(this), 2, 0);
    }, function(){
        hide( $(this) );
    });
});

regEx aside, you should use the jQuery .hover() function, not the .attr() function. I've incorporate the .hover() function as well as the regEx provided by kirilloid

$(document).ready(function() {
    $('img:regex(id, P\d{5,})').hover(function(){
        show( $(this), 2, 0);
    }, function(){
        hide( $(this) );
    });
});
红颜悴 2024-10-23 05:05:23

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

$('img:regex(id,P[0-9][0-9][0-9][0-9]+)').hover(function() {
    show(this,2,0);
},function() {
    hide(this);
}); 

I'm not sure you can attach javascript handlers using attr, but that sounds like a very long way of doing it.
Give this a shot:

$('img:regex(id,P[0-9][0-9][0-9][0-9]+)').hover(function() {
    show(this,2,0);
},function() {
    hide(this);
}); 
独﹏钓一江月 2024-10-23 05:05:23

我知道它并不能真正回答您的问题,但是...

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

I know it doesn't really answer your question but...

Add a class to the elements you want to select.

粉红×色少女 2024-10-23 05:05:23

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

        $(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"
                        });
        });

Try This: (Working in all browsers)

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

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

Rather than

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

                    $("your_html_tag").attr({
                            width : "your-width",
                            height : "your-height",
                            alt: "Online Teacher"
                        });
        });
肩上的翅膀 2024-10-23 05:05:23

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

var $imgs = $('img').filter(function(){return this.id.match(/^P\d\d\d\d\d/);});
$imgs.attr("onmouse.......

Why not just use filter() instead of the :regex library? This should work in all browsers. e.g.

var $imgs = $('img').filter(function(){return this.id.match(/^P\d\d\d\d\d/);});
$imgs.attr("onmouse.......
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文