Ответ 1
Вы можете использовать регулярное выражение или split
имя класса.
$(".etape").click(function(){
var classes = $.grep(this.className.split(" "), function(v, i){
return v.indexOf('btn') === 0;
}).join();
});
У меня есть список элементов, которые имеют несколько классов, например:
<input class="etape btn-info others">
<input class="etape btn-inverse others">
<input class="etape btn-danger others">
Как написать jQuery-код, который позволит мне следующее...
$(".etape").click(function(){
$(this).get("the class that starts with btn-")
// in order to store this value in a variable to reuse it later
});
Вы можете использовать регулярное выражение или split
имя класса.
$(".etape").click(function(){
var classes = $.grep(this.className.split(" "), function(v, i){
return v.indexOf('btn') === 0;
}).join();
});
Вы также можете попробовать:
$(".etape").click(function () {
var theClass = $(this).attr("class").match(/btn[\w-]*\b/);
console.log(theClass);
});
Использует совпадение вместо grep...
// Only select input which have class
$('input[class]').click(function(){
var myClass;
// classNames will contain all applied classes
var classNames = $(this).attr('class').split(/\s+/);
// iterate over all class
$.each(classNames, function(index, item) {
// Find class that starts with btn-
if(item.indexOf("btn-") == 0){
// Store it
myClass = item;
}
});
});
Вероятно, было бы лучше сохранить эти значения в атрибуте data
:
<input class="etape others" data-btntype="info">
<input class="etape others" data-btntype="inverse">
<input class="etape others" data-btntype="danger">
Тогда:
$(".etape").click(function(){
var myBtnType = $(this).data('btntype');
});
Вы можете просто сделать btn своим классом. Однако это будет работать.
$("div[class^='btn-']")
Попробуйте следующее: $('input[class*='btn']').attr("class");
Я только что сделал функцию @Vohuman для повторного использования:
// getClassStartsWith(classes,startswith);
// Example : getClassStartsWith( 'item w-2 h-4 hello' , 'h-' );
function getClassStartsWith(t,n){var r=$.grep(t.split(" "),function(t,r){return 0===t.indexOf(n)}).join();return r||!1}
Пример...
HTML:
<div class="item w-2 h-4 hello"></div>
JS:
var $element = $('.item');
var classes = $element[0].className;
var getHeight = getClassStartsWith(classes,'h-');
Это вернет h-4
, и если класс не начнет с h-
, он вернет false
Как насчет этого? http://api.jquery.com/attribute-contains-word-selector/
$('input[class~="btn-"]')
Класс, начинающийся с btn
и который не может быть первым классом:
Рабочая скрипка: http://jsfiddle.net/c9Tdx/
$("input[class^='btn'],input[class*=' btn']").each(function(){
//whatever
});
Попробуйте это,
if($(selector).attr("class").lastIndexOf("classToStartFrom") == 0)
return "this selector class name starts with 'classToStartFrom'";
else
return "this selector class name doesn't start with 'classToStartFrom'";
Код не проверен.