IE中的jQuery选择不正确

IE中的jQuery选择不正确,jquery,internet-explorer,jquery-selectors,Jquery,Internet Explorer,Jquery Selectors,我正在编写一个基本的应用程序,其中包括更改名称引用的div中的html,它在Chrome、Firefox、Safari等浏览器中运行良好,但在我们钟爱的internetexplorer中却不行。我正在动态加载内容,因此无法提供完整的代码,但这里有一个HTML示例(其中会有许多这样的div与升序数字名称堆叠在一起): 现在,我想让点击条目div中的rating div中的HTML增加1,但是在IE中,点击条目div下面的条目div的rating增加1。我不知道它怎么可能在这里选择了错误的div,因

我正在编写一个基本的应用程序,其中包括更改名称引用的div中的html,它在Chrome、Firefox、Safari等浏览器中运行良好,但在我们钟爱的internetexplorer中却不行。我正在动态加载内容,因此无法提供完整的代码,但这里有一个HTML示例(其中会有许多这样的div与升序数字名称堆叠在一起):

现在,我想让点击条目div中的rating div中的HTML增加1,但是在IE中,点击条目div下面的条目div的rating增加1。我不知道它怎么可能在这里选择了错误的div,因为它有一个非常特定的名称,在我的代码中非常清楚地引用了这个名称。我尝试在单击的条目div中使用jQuery的.find()方法执行相同的操作,并得到相同的结果。我被难住了

点击查看我在说什么。在其他方面可能有问题,但这是我目前唯一关心的事情。如果出现最坏的情况,我可以让它用[name=parseInt(dname)-1]选择元素,当且仅当它在IE中呈现时,但我想找到一个不太黑的解决方案

谢谢你的想法

编辑(6/24 11:30)


结合下面的答案和我新发现的一些奇怪的CSS在混乱的地方定位的知识(内联float right弹出到下一行,除非处理正确),我已经解决了这个问题。感谢你们帮助我成为一名更好的编码员。我将开始更正确地使用属性

如果您正确使用id,似乎可以简化一切

id在整个页面上应该是唯一的,并且看起来您使用它们更像类。也许使用id“1”作为输入,“c1”和“r1”作为评论和评级将允许使用更干净的选择器,从而彻底解决问题。然后你可以做类似的事情

$('#r'+$(this).id).html(newrating)

这并不能真正解决ie的问题,但会使html和javascript更干净。

如果你正确使用id,似乎可以简化一切。;)

id在整个页面上应该是唯一的,并且看起来您使用它们更像类。也许使用id“1”作为输入,“c1”和“r1”作为评论和评级将允许使用更干净的选择器,从而彻底解决问题。然后你可以做类似的事情

$('#r'+$(this).id).html(newrating)

没有真正解决ie的问题,但是让html和javascript更干净了。

好吧,我认为你混淆了选择器

<div id="e15" class="entry">
    <div class="comment">Click here...</div>
    <div class="rating">24</div>
</div>

点击这里。。。
24
如果您现在尝试选择rating div,“this.rating”,它应该选择正确的一个



PS您的名称字段实际上不是必需的,在xhtml中是无效的。(因为它只能是表单字段的成员)

好吧,我认为您混淆了选择器

<div id="e15" class="entry">
    <div class="comment">Click here...</div>
    <div class="rating">24</div>
</div>

点击这里。。。
24
如果您现在尝试选择rating div,“this.rating”,它应该选择正确的一个



PS您的名称字段实际上不是必需的,在xhtml中是无效的。(因为它只能是表单字段的一个成员)

我不认为DIV元素可以有name属性,但这与此无关,因为如果您执行所有与单击的DIV相关的计算,则不需要使用name属性

<div id="entry" class="entry">  
    <div class="comment">Click here...</div>  
    <div class="rating">24</div>  
</div>

<div id="anotherEntry" class="entry">  
    <div class="comment">Click here...</div>  
    <div class="rating">17</div>  
</div>


$.fn.rateup = function() { 
    var ratingElement = $(this).find("div.rating"); 
    var rating = ratingElement.html(); 
    var newrating = parseInt(rating)+1; 
    ratingElement.html(newrating); 
} 

点击这里。。。
24
点击这里。。。
17
$.fn.rateup=函数(){
var ratingElement=$(此).find(“div.rating”);
var rating=ratingElement.html();
var newrating=parseInt(rating)+1;
html(newrating);
} 
这假设每个评级DIV都包装在自己的条目DIV中,并且每个条目DIV都附加了$.fn.rateup事件处理程序


至于选择错误评级的原因,这将取决于哪些元素附加了事件处理程序-我们可以看到执行此操作的代码吗?

我不认为DIV元素可以有name属性,但这与此无关,因为它不是必需的,如果你做了所有的计算相对于被点击的DIV

<div id="entry" class="entry">  
    <div class="comment">Click here...</div>  
    <div class="rating">24</div>  
</div>

<div id="anotherEntry" class="entry">  
    <div class="comment">Click here...</div>  
    <div class="rating">17</div>  
</div>


$.fn.rateup = function() { 
    var ratingElement = $(this).find("div.rating"); 
    var rating = ratingElement.html(); 
    var newrating = parseInt(rating)+1; 
    ratingElement.html(newrating); 
} 

点击这里。。。
24
点击这里。。。
17
$.fn.rateup=函数(){
var ratingElement=$(此).find(“div.rating”);
var rating=ratingElement.html();
var newrating=parseInt(rating)+1;
html(newrating);
} 
这假设每个评级DIV都包装在自己的条目DIV中,并且每个条目DIV都附加了$.fn.rateup事件处理程序


至于选择错误评级的原因,这将取决于附加了事件处理程序的元素-我们可以看到执行此操作的代码吗?

id不能以数字开头technically@kasumi没错。写这封信的时候,我的脑子都没了,所以我要放松一下。我不能从数字开始technically@kasumi没错。写这封信的时候,我的脑子几乎都没了,所以我要放松一下。你的答案在第二封信中是比较正确的,尤其是在上下文中+1这确实产生了正确的选择,并且调整了我的CSS,我现在将注释定位在正确的位置。谢谢大家的帮助。你的答案是2中比较正确的,尤其是使用上下文+1这确实产生了正确的选择,并且调整了我的CSS,我现在将注释定位在正确的位置。谢谢大家的帮助。