2011-09-07 133 views
0

这里是我的工作选择器:$('div' + chapter + ' img')jQuery - 我的选择器也在选择另一个img元素

这里是什么,是在第三章:var chapter = $('#mini_chapter_' + id); 所以对于所有意图和目的可以

$('div#minichapter_05 img') 

这里是我想选择:

<div id="mini_chapter_5" class="mini_chapter" > 
     <div class="illustrationurl"> 
     <img src"../../Img/image.jpg> 
     </div> 
</div> 

它并选择嵌套的图像元素,但也有一些奇怪的原因选择 一个元素没有附近的其他元素显示在这里:

<div class="page"> 
    <div class="header"> 
     <div class="title"> 
      <h1> 
      <img runat="server" class="gzk_logo" src="~/Img/gzklogouse.jpg"/> 

有人可以告诉我为什么会发生这种情况,以及如何解决它?

感谢 亚当

+2

不应该'var chapter ='#mini_chapter_5''而不是jQuery对象?或者你想使用'jQuery.attr(“id”)'? –

+3

如果可能,请使用'#minichapter_05'而不是'div#minichapter_05'。没有理由使用标签名称和ID选择器。 – meagar

回答

2
$('#' + chapter.attr('id') + ' img'). 

在你的选择,你是把对象转换成字符串如章。你的案例中的章节是对象而不是字符串,你需要做的就是放置章节的ID,就像我上面做的那样。

+0

如果你的答案除了代码提供了一些解释,我会upvote。一般来说,如果所有需要的人都是代码,他们就会知道如何自己编写代码。 *为什么这是正确的解释比代码更有价值。 – meagar

+0

好吧,编辑,现在解释是在答案 –

+0

你不neet'div'。 '$('#'+ chapter.attr('id')+'img')'更快。 – binarious

1

尝试将:first添加到img选择器。这样你只能选择第一个img元素。或者你可以尝试$('div#minichapter_05').find('img')

+0

第二种解决方案将抓取div元素,然后只搜索其直接子元素的img元素。 – rlemon

1

如果此行是真正准确:

var chapter = $('#mini_chapter_' + id); 

那么你设置“一章”等于物体#mini_chapter_5。

尝试改变行:

var chapter = '#mini_chapter_' + id; 

这样,您将被设定为等于文本,允许适当的插入到你的选择。