2011-10-20 25 views
29

Tôi có html sau:Làm thế nào để có được ID của nguyên tố nhấp với 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.... */ 

và kịch bản jQuery sau:

$(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; 
    }); 

}); 

của pagerlink 'liên kết kiểm soát là để Cycle jQuery slideshow. Nếu tôi trao đổi dòng này:

$container.cycle(id); 

cho điều này

$container.cycle(7); 

nó hoạt động ... (rõ ràng là chỉ điều hướng để trượt số 7). Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể nhận ID của liên kết được nhấp và chuyển nó vào dòng đó?

Cảm ơn trước!

+6

'#' không phải là ký tự hợp lệ trong '[id]'. – zzzzBov

Trả lời

57

ID của bạn là #1, và cycle chỉ muốn một số truyền cho nó. Bạn cần phải xóa # trước khi gọi cycle.

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

Ngoài ra, ID không được chứa ký tự #, ID không hợp lệ (ID số cũng không hợp lệ). Tôi đề nghị thay đổi ID thành một cái gì đó như 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

ID số thực sự được phép trong HTML5. – mkataja

3

Id của bạn sẽ được chuyển qua như # 1, # 2 vv Tuy nhiên, # không hợp lệ dưới dạng ID (ID tiền tố bộ chọn CSS có #).

6

Bạn chỉ cần loại bỏ các hash từ đầu:

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

Thông số chính thức cho biết rằng ID phải luôn bắt đầu bằng chữ cái viết hoa hoặc viết thường, không bao giờ là số (hoặc dấu băm). Nhiều trình duyệt sẽ cho phép nó, nhưng bạn không thể mong đợi chúng. – Blazemonger

2

Trước hết bạn không thể có chỉ là một số cho id của bạn trừ khi bạn đang sử dụng DOCTYPE HTML5. Thứ hai, bạn cần phải hoặc là loại bỏ cáC# trong mỗi id hoặc thay thế nó với điều này:

$container.cycle(id.replace('#','')); 
Các vấn đề liên quan