Jquery - функция "каждый/клик" не работает
EDIT: это работает, но не уверен, почему?
$('button').each(function() {
$(this).bind(
"click",
function() {
alert($(this).val());
});
});
Я не уверен, почему это не работает... Сейчас я просто пытаюсь вывести предупреждение с помощью значения кнопки, но оно не работает на моей странице. Я не получаю никаких консольных ошибок в Firebug и не вижу ничего, что помешало бы ему работать.
Мой HTML выглядит так:
<table id="addressbooktable">
<thead>
<tr>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>7892870</td>
<td><button id="button-20" class="custom-action" value="XY89" name="info">Click</button></td>
</tr>
<tr>
<td>9382098</td>
<td><button id="button-21" class="custom-action" value="XY544" name="info">Click</button></td>
</tr>
<tr>
<td>3493900</td>
<td><button id="button-22" class="custom-action" value="XY231" name="info">Click</button></td>
</tr>
</tbody>
</table>
И код выглядит следующим образом:
$('button').each(function() {
$(this).click(function() {
alert($(this).val());
}
});
Но, щелкнув по нему, ничего не делает? Я использую его неправильно?
Ответы
Ответ 1
Вы можете связать все кнопки с событием клика, как это, нет необходимости перебирать их
$(function(){
$("button").click(function() {
alert($(this).attr("value"));
});
});
Но более точный селектор может быть:
$(function(){
$("button[id^='button-'").click(function() {
alert($(this).attr("value"));
});
});
Ответ 2
Вам не хватает );
и убедитесь, что ваш код находится в обработчике document.ready
, например:
$(function() {
$('button').each(function() {
$(this).click(function() {
alert($(this).val());
}); //missing ); here!
});
});
Таким образом, он не будет работать, пока те элементы <button>
не будут найдены в DOM для $('button')
, чтобы найти их. Кроме того, вы можете запустить .click()
набор элементов, например:
$(function() {
$('button').click(function() {
alert($(this).val());
});
});
Ответ 3
Вам не хватает )
:
$('button').each(function(){
$(this).click(function(){
alert($(this).val());
});
});
Ответ 4
Угу. Попробуйте следующее:
$('button').click(function() {
alert($(this).val());
});
Вам также может понадобиться return false
или .preventDefault()
.
Ответ 5
Вы не можете использовать метод .val()
для кнопки. Вы можете использовать .attr()
, чтобы получить атрибут value. Если вы используете пользовательские атрибуты, используйте атрибут данных.
Try
$("button").click(function(){
alert($(this).attr("value"));
});