如何使用jQuery获取clicked元素的ID

Ada*_*dam 42 jquery jquery-cycle

我有以下html:

<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.... */
Run Code Online (Sandbox Code Playgroud)

和以下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; 
    }); 

});
Run Code Online (Sandbox Code Playgroud)

'pagerlink'链接控件是jQuery Cycle幻灯片.如果我交换这一行:

$container.cycle(id); 
Run Code Online (Sandbox Code Playgroud)

为了这

$container.cycle(7); 
Run Code Online (Sandbox Code Playgroud)

它的工作原理......(显然只能导航到7号幻灯片).所以,我的问题是如何获取被点击链接的ID并将其传递到该行?

提前致谢!

Roc*_*mat 72

您的ID是#1,并且cycle只想传递一个号码.您需要删除#之前的呼叫cycle.

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

此外,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; 
});
Run Code Online (Sandbox Code Playgroud)

  • HTML5中实际允许使用数字ID. (7认同)

Ric*_*ton 7

您只需要从头开始删除哈希:

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id').substring(1);
    $container.cycle(id); 
    return false; 
}); 
Run Code Online (Sandbox Code Playgroud)

  • 官方规范说ID应始终以大写或小写字母开头,而不是数字(或哈希标志).许多浏览器都会允许它,但你不能指望它们. (2认同)

小智 6

@Adam 只需使用 onClick="getId()" 添加一个函数

function getId(){console.log(this.event.target.id)}
Run Code Online (Sandbox Code Playgroud)