2012-01-06 5 views
0

Скажите, что у меня есть три элемента «кнопки» в одном родительском «div». Предполагая, что эти кнопки могут быть помечены как 1, 2, 3 или 0, 1, 2, используя jQuery, есть ли простой способ определить, какая кнопка нажата?Определите, какая кнопка была нажата, используя jQuery

Вот HTML:

<div class="table-tabs"> 
    <button class="tab1 selected">Description</button> 
    <button class="tab2">Monitoring</button> 
    <button class="tab3">Change Logs</button> 
</div> 

Я хотел бы знать номер, чтобы я мог активировать соответствующую таблицу при нажатии кнопки.

+0

показать нам намеченную HTML и мы можем показать вам – mcgrailm

+2

Да, есть. Как выглядит HTML-код, как выглядит ваш JavaScript? –

ответ

3

Вы можете использовать .index(), чтобы получить номер кнопки (глядя на 0).

$('.table-tabs button').click(function(){ 
    console.log($(this).index('.table-tabs button')); 
}); 

DEMO: http://jsfiddle.net/UPKgm/

Или, вы можете разобрать class и получить вкладку номер, но это требует больше работы.

$('.table-tabs button').click(function() { 
    var classes = $(this).attr('class').split(' '), 
     tabID; 
    $.each(classes, function() { 
     if (this.indexOf('tab') === 0) { 
      tabID = this.replace('tab', ''); 
      return false; 
     } 
    }); 
    console.log(tabID); 
}); 

DEMO: http://jsfiddle.net/UPKgm/1/

+0

Вот и все! Отлично! Я знаю, что было что-то простое! – RyJ

0

Попробуйте это:

$('.table-tabs button').click(function(){ 

var btn = $(this).html(); 

alert(btn); 

}); 
+0

Это действительно отличное решение, поскольку я использую кнопки в качестве вкладок, а не как элементы формы. В идеале, хотя я не хочу хранить числа в качестве значений кнопки, потому что этот атрибут может быть необходим для данных, связанных с формой. – RyJ

+0

рада помочь ;-) –

0

Просто захват, который щелкнул кнопку. :)

http://jsfiddle.net/MetalFrog/9dDy9/5/

Edit: обновление, чтобы соответствовать вашему примеру HTML.

$(function(){ 
    $('.table-tabs button').click(function(){ 
     console.log($(this).text()); 
    }); 
}); 
+1

Ваша скрипка не работает. '' не имеют атрибута 'value'. –

+1

@ Rocket, следовательно, изменение текста. :) Забыл обновить на скрипке, прежде чем схватить ссылку. – MetalFrog

0

Если у вас есть ввод кнопки типа, где число устанавливается на значение входа, вы можете использовать селектор JQuery, чтобы выбрать все входы кнопки типа, а затем добавить функцию для нажмите событие, которое будет считывать значение:

HTML:

<div> 
    <input type="button" value="1" /> 
    <input type="button" value="2" /> 
    <input type="button" value="3" /> 
</div> 

JavaScript:

$(":input[type='button']").click(function() { 
     alert($(this).val()); 
    } 
) 

Пример: http://jsfiddle.net/M6v5b/

Смежные вопросы