2011-10-21 27 views
5

Tôi đang cố gắng viết một bản ghi người dùng cho YouTube sẽ chọn tất cả các video trên một trang dựa trên tiêu đề của chúng, cũng được đặt làm thuộc tính hình ảnh thu nhỏ 'title thuộc tính.JQuery - Làm cách nào tôi có thể viết bộ chọn 'Thuộc tính Chứa' phân biệt chữ hoa chữ thường?

Các công trình sau đây chỉ là tốt, nhưng nó phân biệt chữ hoa là:

var videoTitle = "the"; 

$('img[title*="'+videoTitle+'"]').each(function() { 

// stuff here 

}); 

Bộ chọn ở trên sẽ phù hợp với bất kỳ video với "the" trong tiêu đề, nhưng không phải là "Các" hoặc "THE", ví dụ.

Tôi đã đọc rằng tôi có thể sử dụng .filter() để thực hiện điều này bằng cách nào đó, nhưng tôi không chắc chắn cách thức hoạt động và tôi không thể tìm thấy ví dụ phù hợp với kịch bản của mình thành công.

tôi đã cố gắng một cái gì đó như thế này, dựa trên một ví dụ tôi tìm thấy trên StackOverflow, nhưng nó không hoạt động:

$('img[title]').filter(function(){return this.title.toLowerCase() == videoTitle}).each(function() { 

// stuff here 

}); 

Trả lời

9

này được chuyển thể từ một bài đăng của Karl Swedburg trên jQuery docs page cho 'Thuộc tính chứa Selector'. Nó sử dụng một RegEx và i trường hợp chuyển đổi không nhạy cảm cùng với các chức năng filter -

<img title="Star Wars"/> 
<img title="Star Wars 2"/> 
<img title="Star Wars 3"/> 
<img title="Back To The Future"/> 

var videoTitle = "star wars"; 
var re = RegExp(videoTitle ,"i"); 
$('img[title]').filter(function() { 
    return re.test(this.title); 
}).each(function() {alert(this.title)}); 

Tên của bộ phim các 'Star Wars' ba nên được cảnh báo.

Demo - http://jsfiddle.net/FKBTx/3

+0

Cảm ơn bạn. Sau khi tôi đăng câu hỏi này, người bạn tôi đã viết kịch bản cho biết anh ấy không cần nó là trường hợp không nhạy cảm và lấy kịch bản theo cách tôi đã có nó. Tuy nhiên, tôi đã thử nghiệm điều này và nó hoạt động tuyệt vời, và tôi tích cực nó sẽ có ích tại một số điểm. Cảm ơn một lần nữa. – vertigoelectric

+0

Có cách nào để định dạng trước cùng một bộ lọc chỉ với thuộc tính 'data-' tùy chỉnh? – bukka

0

sử dụng tùy chọn lọc, chỉ cần thay đổi các chức năng để return this.title.toLowerCase().indexOf(videoTitle) >= 0 nếu không nó là chỉ phù hợp với 'the', không phải những thứ có chứa 'the' (nếu đó là những gì bạn muốn).
EDIT: Ngoài ra, không chắc chắn nếu this.title là ok, nhưng có lẽ nếu ở trên không hoạt động, hãy thử $ (this) .attr ('title')

0
$('img').filter(function (index) { return this.title.toLowerCase() === videoTitle; }) 
0

này nên làm việc:

var videoTitle = "bla"; 
$('img').filter(function() { 
    return $(this).attr('title').toLowerCase() == videoTitle; 
}).each(function() { 
    // do something 
}); 
1

Ví dụ -

$('img').filter(function(){ 
    return this.title.match(RegExp(videoTitle ,"i")) 
}).each(function(){ 
     alert(this.title); 
}) 
Các vấn đề liên quan