2010-09-17 107 views
1

的HTML:jQuery的选择与选择一张ID

<div id="videos"> 
    <a href="javascript:loadAndPlayVideo('QXoIMTjk9Xg')"><img src="http://i.ytimg.com/vi/QXoIMTjk9Xg/default.jpg" id="thumb_QXoIMTjk9Xg"></a> 
    <a href="javascript:loadAndPlayVideo('nWubfMkDfVs')"><img src="http://i.ytimg.com/vi/nWubfMkDfVs/default.jpg" id="thumb_nWubfMkDfVs"></a> 
    <a href="javascript:loadAndPlayVideo('S3WDKXq36WI')"><img src="http://i.ytimg.com/vi/S3WDKXq36WI/default.jpg" id="thumb_S3WDKXq36WI"></a> 
    <a href="javascript:loadAndPlayVideo('sGrfLQVVI8A')"><img src="http://i.ytimg.com/vi/sGrfLQVVI8A/default.jpg" id="thumb_sGrfLQVVI8A"></a> 
</div> 

问题: 我们有ID为 'nWubfMkDfVs',我们需要知道下一个ID,以获得播放列表功能。

注:这是没有thumb_,该thumb_是因为我使用id nWubfMkDfVs在另一个DIV,并希望避免双重标识的

问题1:如何做一个选择,让我们S3WDKXq36WI为使用nWubfMkDfVs时的响应?

问题2:如何在使用sGrfLQVVI8A时使QXoIMTjk9Xg成为响应的选择器?

我尝试了很多选择器,但都失败了,我很好奇你将如何解决这个问题!

+1

你应该避免使用 “|”作为前缀,因为$('#| nWubfMkDfVs');例如会为您的提示抛出异常 – softcr 2010-09-17 10:22:35

+0

Thnx,我会将它们更改为thumb_(thumb_nWubfMkDfVs)。问题依然如此:) – MeProtozoan 2010-09-17 10:25:18

回答

1

试试这个(demo):

HTML

<div id="videos"> 
    <a href="javascript:loadAndPlayVideo('QXoIMTjk9Xg')"><img src="http://i.ytimg.com/vi/QXoIMTjk9Xg/default.jpg" id="thumb_QXoIMTjk9Xg"></a> 
    <a href="javascript:loadAndPlayVideo('nWubfMkDfVs')"><img src="http://i.ytimg.com/vi/nWubfMkDfVs/default.jpg" id="thumb_nWubfMkDfVs"></a> 
    <a href="javascript:loadAndPlayVideo('S3WDKXq36WI')"><img src="http://i.ytimg.com/vi/S3WDKXq36WI/default.jpg" id="thumb_S3WDKXq36WI"></a> 
    <a href="javascript:loadAndPlayVideo('sGrfLQVVI8A')"><img src="http://i.ytimg.com/vi/sGrfLQVVI8A/default.jpg" id="thumb_sGrfLQVVI8A"></a> 
</div> 
<br> 
current ID: <span class="current"></span> 
<br> 
<button>Next</button> 

脚本

$(document).ready(function() { 
    var currentID = 'QXoIMTjk9Xg'; 
    $('.current').html(currentID); 

    $('button').click(function() { 
     currentID = getNextId(currentID); 
     $('.current').html(currentID); 
    }); 

    getNextId = function(id) { 
     // default to first video if next isn't found 
     var nxt = $('#videos').find('img[id$=' + id + ']').parent().next().find('img').attr('id') || $('#videos img:eq(0)').attr('id'); 
     return nxt.replace(/thumb_/, ''); 
    } 
}) 
+0

哇!好的解决方案Thnx :) – MeProtozoan 2010-09-17 12:15:39

1

因为您引用嵌套在一个内部的ID,你就必须做到这一点:

$("#nWubfMkDfVs").parent().next("a").children('img') 

注意,首先选择父母,那么下一个锚点,然后IMG的孩子。

+0

太棒了!这是一个清楚而好的答案,谢谢!问题1已解决。问题2仍然是开放的(拥有列表中的最后一个ID并获得列表中的第一个ID作为响应) – MeProtozoan 2010-09-17 10:33:16