jquery - 每个/单击功能不起作用

时间:2010-12-21 16:22:14

标签: jquery click each

编辑:这有效,但不确定原因?

  $('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());
    }
  });

但是,点击它什么都不做?我使用不正确吗?

5 个答案:

答案 0 :(得分:20)

你可以用这样的点击事件绑定所有按钮,不需要循环它们

$(function(){
    $("button").click(function() {
        alert($(this).attr("value"));
    });
});

但更精确的选择器可能是:

$(function(){
    $("button[id^='button-'").click(function() {
        alert($(this).attr("value"));
    });
});

答案 1 :(得分:7)

您错过了);,并确保您的代码位于document.ready处理程序中,如下所示:

$(function() {
  $('button').each(function() {
    $(this).click(function() {
      alert($(this).val());
    }); //missing ); here!
  });
});

这样,只有<button>元素在$('button')的DOM中才能找到它们,它才会运行。此外,您可以对一组元素运行.click(),如下所示:

$(function() {
  $('button').click(function() {
      alert($(this).val());
  });
});

答案 2 :(得分:1)

您遗失)

$('button').each(function(){
            $(this).click(function(){
                alert($(this).val());
            });
        });

答案 3 :(得分:0)

烨。试试这个:

$('button').click(function() {
      alert($(this).val());
  });

您可能还需要return false.preventDefault()

答案 4 :(得分:0)

您无法使用.val()方法获取按钮。您可以使用.attr()获取value属性。如果您使用自定义属性,请使用data-attribute

尝试

$("button").click(function(){
    alert($(this).attr("value"));
});