jQuery中class选择器的限制

By | 2015/04/16

前两天同事找我看个脚本,说是IE8不能使用,我一想肯定是用了什么高级API了呗,一看果然

document.getElementsByClassName(className);

这里用了getElementsByClassName,低版本IE根本不认识,自然不行。但是转念想想又很奇怪,这个脚本明明是基于jQuery的,为什么不用$(“.className”)而用这个API呢?于是我尝试改了一下,用$(“.” + className).get()来获得DOM元素传递给下面的脚本,结果果然不行,一下子激起了兴趣。

debug后发现,获得的className是data[XXX][yyy]这样的格式(好吧,就是来自CakePHP的FormHelper),确实class中方括号[]恐怕不是合法的字符,用原生的querySelecotr也无法找到,但是getElementsByClassName却可以找到,不禁赞叹造物神奇……

赞叹过后,问题还是要解决的,不太可能让对方不使用IE8,还好绕个弯一试,

$(“class*='” + className + “‘”)

这样的方式是可以获得的,虽然效率应该是降了一个档次,不过也算是可以使用了。

严格来说这不是jQuery的限制,jQuery的表现完全在意料之中,应该说getElementsByClassName的表现有额外惊喜吧~

2 thoughts on “jQuery中class选择器的限制

  1. 吹牛大王

    闲来无事,进来看看,士别三日,则当刮目相看。
    还在WEB里挖坑!
    无非就是从别人挖的坑里,跳到另一个坑里。
    有时,会怀疑大脑意识。
    为何,人脑的思维都会有惯性。
    当我,灵魂出窍时,看到了一个渺小的自己。

    这么说吧,我想开个系统安全的公司,提供安全审计服务,兄,觉得可行不?
    虽然,这个事情好像是别人已经做过的,但是,我还是克服不了大脑的惯性思维。
    后来别人说我适合天文学发展,但那个,很多科学家都研究30,40年都没什么成就,
    作为一个有使命感的男人,好像已经不能。

    还有一个就是研究天文。历史莫非只能前进,但,历史是能重演的。
    作为一名中国人,哦,不,我完全就不该是什么,
    很奇怪,人的大脑会思考,人脑会预判球罗下的位置,能瞄准篮筐,这都是不解之谜。

    说,宇宙是真空,那么,飞船只要离开地球引力后,那会不会就不需要燃料了,就会保持速度,这样的话,飞船如何转弯呢?如果遇到暗礁。

    这么大一个宇宙,这么多大石头,有燃烧的,有冰冷的, 为什么会有温度这个东西,火?是人的肉体对大脑产生的幻觉还是,大脑在欺骗我们。。。。。。。

    好奇怪。有时,我会怀疑自己,看到的,大脑里所想的东西。思考,会不会是有虫子在大脑里作怪呢??为什么会有冷,热,冷和热是谁提出来的,这个定义。

    Reply
    1. xishui Post author

      是啊,很奇怪,只能赞叹造物神奇…… 所以现在我想不通就这么骗自己,以我等凡人的心智,妄图考虑世间万物至理,无怪乎上帝莞尔,所以就放弃了:)

      Reply

发表评论

您的电子邮箱地址不会被公开。