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"));
});