Chrome和Firefox中jQuery代码的不同行为?

时间:2013-11-11 14:30:28

标签: jquery each

我在奇怪的情况下挣扎。 1.在Chrome和Firefox中打开并调试相同的页面。 2.代码是:

$("ul[id^='_'").each(function(){
         // some actions which work good in Chrome
});

3。调试时我发现问题出在$("ul[id^='_'") 4.尝试在Chrome控制台中执行此操作,我得到:

enter image description here

没关系,我期待。但是,Firefox 25中的相同代码会返回以下内容:

enter image description here

那是空物,显然不是。 那么这两个浏览器中的代码有什么区别? 我怀疑问题可能是id-attribute的西里尔文值,但是它成功运行了IE和Chrome,并且落入了Firefox和Mozilla?

请帮我解决。

UPD: http://jsfiddle.net/jeston/WEm78/

3 个答案:

答案 0 :(得分:3)

可能是错的:

$("ul[id^='_']").each(function(){
         console.log(this)
});

// ul [id ^ ='_'] < ----

答案 1 :(得分:1)

另一种解决方案

var $result = $('ul').filter(function(){
    return this.id.charAt(0) === '_';
});

console.log($result);

http://jsfiddle.net/2enJ3/

答案 2 :(得分:0)

There is a good answer关于ID的用途。

简而言之,问题是HTML ID字段只能以字母开头,没有数字或特殊字符。

例如,这些是有效的身份证件

hello
hello_1
hello_world_1
dropdown

这些不是

1_dropdown
$34_element