2011-10-20 48 views
29

我有以下的html:如何获得点击的元素的ID与jQuery

<a href="#" id="#1" class="pagerlink" >link</a> 
<a href="#" id="#3" class="pagerlink" >link</a> 
<a href="#" id="#2" class="pagerlink" >link</a> 
/*etc.... */ 

和下面的jQuery脚本:

$(document).ready(function() { 

    var $container = $('.gallery_r').cycle({ 
     fx:  'scrollHorz', 
     speed: 500, 
     timeout: 0 
    }); 

    $('a.pagerlink').click(function() { 
     var id = $(this).attr('id'); 
     $container.cycle(id); 
     return false; 
    }); 

}); 

的 'pagerlink' 链接控制是jQuery的周期幻灯片。如果我换这行:

$container.cycle(id); 

$container.cycle(7); 

它的工作原理...(明明只有导航下滑7号)。所以,我的问题是如何获取被点击链接的ID并将其传递到该行?

在此先感谢!

+6

'#'不是'[id]'中的有效字符。 – zzzzBov

回答

57

你的ID是#1cycle只是希望传递给它一个数字。在致电cycle之前,您需要删除#

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id'); 
    $container.cycle(id.replace('#', '')); 
    return false; 
}); 

此外,ID应该不包含#字符,它是无效的(数字ID也无效)。我建议将ID改为pager_1

<a href="#" id="pager_1" class="pagerlink" >link</a> 

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id'); 
    $container.cycle(id.replace('pager_', '')); 
    return false; 
}); 
+6

实际上,HTML5中允许使用数字ID。 – mkataja

3

您的ID将作为#1,#2等传递。但是,#作为ID无效(CSS选择符前缀ID为#)。

6

你只需要从一开始就删除哈希:

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id').substring(1); 
    $container.cycle(id); 
    return false; 
}); 
+2

官方规范说,ID应始终以大写或小写字母开头,而不是数字(或散列符号)。许多浏览器将允许它,但你不能指望它们。 – Blazemonger

2

首先,除非你使用的是HTML5 DOCTYPE,你不能只是一个数字为您的ID。其次,你需要或者删除每个ID#或更换与此:

$container.cycle(id.replace('#',''));