2015-08-18 94 views
0

我有一個有很多類的元素,我想訪問一個特定的類來獲取它的最後一個數字(我意識到數據屬性或ID可能是更好的選項,但現在我被困在課堂上)。我已經可以使用它的ID來選擇元素,所以我只需要確定my-target- *的最後一個數字是什麼。Javascript或JQuery字符串獲取具有某些前綴的子字符串

<div class="foo bar apple my-target-1"></div> 

我想獲取類我-靶*,然後從中提取1。

+2

它總是我的目標 - *? – KAD

+0

是的,它將永遠是我的目標 - * – MicFin

+1

完美的情況下使用數據屬性,而不是類 – epascarello

回答

2

循環遍歷所有包含'my-target'的元素,假設它是最後一個類,按空格拆分類,得到最後一個類,用' - '拆分它,然後獲取需要的值。

這裏是一個工作示例:

$(document).ready(function(){ 
 

 
$("[class*= my-target]").each(function(){ 
 

 
    var extract= $(this).attr('class').split(' ').pop().split('-').pop(); 
 
    $("#result").html(extract); 
 
    
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="foo bar apple my-target-1"></div> 
 
<span id="result"></span>

+0

很好,實際回答問題 – AmmarCSE

+0

謝謝@AmmarCSE – KAD

0

也許是整潔,如果你使用的數據元素做到這一點

<div class="foo bar apple my-target-1" data-target="1"></div> 

你這樣做會得到:

$('.my-target-1').data('target') 

這比解析類

+0

我不知道它是否是我的目標-1或2或100.我可以使用元素選擇器選擇元素或ID,但我需要訪問該類並從中獲取# – MicFin

+0

然後,您可以簡單地使用'my-target'作爲類的名稱,而不是'my-target'並獲取#。我的意思是,如果你有選擇的元素,你可以訪問數據元素來獲得你需要的值 – rolo1091

1

這裏更好的是一個jQuery選擇器應該瞄準你的元素:

​​

但是,這可能是更普遍比你需要的:它使用的CSS 選擇*=,所以這也將匹配相同的要素如下:

<div class="not-my-target"></div> 

你可以嘗試選擇的組合,以獲得更多的東西具體:

$("[class^=my-target], [class*= my-target"]); 

這結合了CSS 開始與選擇,用含有。

現在搶你從類名中所需的數據,你需要做一些字符串解析的class屬性:

var numberToExtract = -1; 

var elem = $("[class*=my-target-]"); 

if (elem) 
{ 
    classes = elem.attr("class").split(/\s+/); 

    $.each(classes, function(idx, el) 
    { 
     if (el.startsWith("my-target-")) 
     { 
      numberToExtract = el.split("-").pop(); 
      return false; 
     } 
    }); 
} 
0

爲了得到啓動任何一個與班試試這個

$('div[id^=foo bar apple my-target]') 
0

如果您使用的是類,而不是一個數據屬性卡,你可以提取的類從對象你」滿弦ve found found with:

obj.attr('class') 

然後將其與使用字邊界和捕獲括號的正則表達式進行匹配提取'my-target-*'

0

末尾的數字您必須具有ID才能捕獲特定的div或跨度內容。 小心,也許你有一個班級和一個小班。

<div id='id' class='myclass mysubclass' >Testing</div> 

所以,如果你想擁有類選擇,請執行以下操作:

var className = '.'+$('#id').attr('class').split(' ').join('.')

,你將有

.myclass.mysubclass

現在,如果你想選擇所有具有相同類的元素,例如div:

var class=$('.'+$('#id').attr('class').split(' ').join('.')) 

這意味着

var class=$('.myclass.mysubclass')

如果你想第二類爲利用成元素

var class_name = $('#id').attr('class').split(' ')[1]多個類別;`

,或者你可以簡單地使用var className = $('#id').attr('class');這將返回全名類和子類然後使用JQuery/JavaScript子串方法處理它。