2012-12-19 29 views
7

Tôi đang cố gắng thay đổi các thuộc tính idname trên một trang. Mã Tôi đang sử dụng là:Regex với .find(), không có kết quả

var img = new RegExp('id*="launch_pad_image_slide_\d"', g) ; 
$('.slider-data').each(function(){ 
    $(this).find(img).attr('id', 'random stuff'); 
});    

Giả định là .find chức năng nên lấy toàn bộ id bên:

id="launch_pad_image_slide_2" 

... nhưng nó không hoạt động.

5 giờ về điều này và bị đốt cháy. Gợi ý? Về cơ bản mỗi khi một trường bị xóa, jQuery phải lặp qua chúng và đánh số các thuộc tính id/name đúng cách để tránh tăng gấp đôi.

+1

@VisioN gì đã đăng nên khắc phục vấn đề của bạn, nhưng đối với tham khảo trong tương lai bằng cách sử dụng các thuộc tính gia tăng không bao giờ là một giải pháp thanh lịch vì nó dẫn đến các vấn đề như bạn vừa trải nghiệm. Thay vào đó, hãy sử dụng các phần tử có cùng một lớp hoặc tên và đi qua chúng, hoặc thông qua DOM hoặc dưới dạng một mảng. –

+0

@RoryMcCrossan Đâu là cây cung của bạn? :) – VisioN

+0

@VisioN hãy kiểm tra các mũ trong Winter Bash: D –

Trả lời

10

Bộ chọn jQuery không hỗ trợ cú pháp regex. Tuy nhiên, bạn có thể sử dụng Attribute Starts With Selector:

$(this).find("[id^='launch_pad_image_slide_']").prop("id", "random stuff"); 

Một cách khác là để filter các yếu tố:

$(this).find("[id]").filter(function() { 
    return /^launch_pad_image_slide_\d$/.test(this.id); 
}).prop("id", "random stuff"); 
1

Hãy thử điều này:

$('img').each(function(){ 
      if ($(this).attr('id').indexOf("launch_pad_image_slide_") >= 0) 
       $(this).attr('id',Math.random()); 
    }); 
Các vấn đề liên quan