2010-07-08 31 views
18

Cách nhanh nhất có thể để nhận chuỗi như "phai" từ các lớp trong phần tử bên dưới là gì?jQuery - Nhận lớp phần tử dựa trên tiền tố

<div class="MyElement fx-fade"> ... </div> 
+0

Điều này sẽ giúp bạn làm gì? Tôi không chắc chắn ý của bạn là gì. –

Trả lời

13
var classes = $('.MyElement').attr('class').split(' '); 
for (var i = 0; i < classes.length; i++) { 
    var matches = /^fx\-(.+)/.exec(classes[i]); 
    if (matches != null) { 
    var fxclass = matches[1]; 
    } 
} 
+0

cảm ơn: P Tôi yêu bạn: D – Alex

2

Kiểm tra JQuery selector regular expressions. Nó có thể là chính xác những gì bạn cần! :)

+0

Tôi nghĩ rằng bạn đã làm điều tương tự tôi đã làm. Tôi đã đọc sai câu hỏi, trả lời câu hỏi và sau đó xóa câu trả lời của tôi. OP không yêu cầu cách lọc các phần tử được cung cấp cho phần khớp. Tôi nghĩ rằng cho các yếu tố, OP là yêu cầu làm thế nào để trích xuất một phần của thuộc tính. –

+0

Ah! Trong trường hợp đó, tôi xin lỗi vì sự nhầm lẫn. – Sai

68

Nếu bạn muốn tìm kiếm một cái gì đó kết thúc trong 'phai' bạn sẽ sử dụng:

$("*[class$='fade']") 

Và đối với các yếu tố với một lớp học mà bắt đầu với 'phai' bạn sẽ sử dụng:

$("*[class^='fade']") 

Và để có được những yếu tố có chứa 'phai' bạn sẽ sử dụng (điều này sẽ nhanh hơn đi qua chuỗi tên lớp)

$("*[class*='fade']") 

Dấu "*" lấy tất cả các phần tử để bạn có thể thay thế thành phần này bằng phần tử bạn muốn.

Nếu bạn muốn yếu tố mà có một classname rằng bắt đầu với 'FX' bạn sẽ làm gì:

var classname = ""; 
var elArray = $("*[class*='fx-']"); 

for (var a= 0; a < elArray .length; a++) 
{ 
    //fade 
    classname = elArray[a].split("-")[1]; 
} 

Mảng được sử dụng trong vòng lặp for sẽ có tất cả các yếu tố với classnames như 'FX' .

Thay vì vòng lặp kiểm tra các phần tử cho tên lớp chính xác.

Thông tin chi tiết tại jquery.com

+1

+1 cho giải pháp jQuery – HurnsMobile

+0

elArray [a] .split không phải là một hàm? – bitstrider

+0

Sẽ không hoạt động khi có nhiều lớp. – powtac

1

tôi có thể đi với một cái gì đó như:

//Split class list into individual classes: 
var classes = $(".MyElement").attr("class").split(" "); 
var fxType; 

//Loop through them: 
for (var i = 0, max = classes.elngth; i < max; i++) { 
    var class = classes[i].split("-"); 
    //Check if the current one is prefixed with 'fx': 
    if (class[0] == "fx") { 
    //It is an FX - do whatever you want with it, the type of FX is stored in class[1], ie: 
    fxType = class[1]; 
    } 
} 
+1

Cẩn thận, 'lớp' là một từ dành riêng trong javascript và sẽ gây ra lỗi trong một số trình duyệt. –

+0

Rất tiếc, đã có cảm giác. Cảm ơn! – Jake

-1

đoạn đơn giản này chúng tôi sử dụng trong của chúng tôi các trang web:

/** 
* Script to load a popup container for share buttons 
* 
* Possible usage for Facebook, Twitter and Google: 
* 
* <a class="share-buttons-fb" href="https://www.facebook.com/sharer/sharer.php?u=<?php echo get_the_permalink(); ?>&title=<?php the_title(); ?>">Facebook</a> 
* <a class="share-buttons-twitter" href="https://twitter.com/intent/tweet?text=<?php the_title(); ?>: <?php echo get_the_permalink(); ?>">Twitter</a> 
* <a class="share-buttons-google" href="http://plus.google.com/share?url=<?php echo get_the_permalink(); ?>">Google+</a> 
*/ 
jQuery(document).ready(function ($) { 

    // Whenever an anchor with the class with share-button in it is clicked 
    $("a[class*='share-button']").click(function() { 
     // Variables to set the size of the popup container 
     var windowWidth = 500; 
     var windowHeight = 255; 

     // Variables to set the position of the popup container 
     var positionWindowLeft = (screen.width/2) - (windowWidth/2); 
     var positionWindowTop = (screen.height/3) - (windowHeight/3); 

     // Create new windows with the opening url of the href attribute of the anchor and the above variables 
     var popupWindow = window.open($(this).prop('href'), '', 'scrollbars=no,menubar=no,status=no,titlebar=no,toolbar=nolocation=no,menubar=no,resizable=noe,height=' + windowHeight + ',width=' + windowWidth + ',top=' + positionWindowTop + ', left=' + positionWindowLeft); 

     // If the default windows is focused 
     if (window.focus) { 
      // Change the focus to the the popup window 
      popupWindow.focus(); 
     } 

     return false; 
    }); 
}); 
Các vấn đề liên quan