0

当我有多个按钮可以使用相同的“id”单击时,我正在尝试创建一种简单的方法来从自定义 HTML 属性中提取信息。

我想知道我是否可以从我按下的特定按钮传递“url”属性值。现在,它总是只抓住第一个......

代码:

<script>
$(document).ready(function() { 
    $(":input[id='alarm']").click(function() {
        alert($("input[url]").attr("url"));
    });
});
</script>

<table id='alarms'>
    <th>ID</th>
    <th>CaseID</th>
    <th>Alarm</th>

    <tr>
        <td width="50">2040</td>
        <td width="180">TEST-111110-123-R4</td>
        <td><input id="alarm" type="button" value="Cancel" url="../silencealarm.php?id=2040"></td>
    </tr>
        <td width="50">2042</td>
        <td width="180">TEST-111110-123-R6</td>
        <td><input id="alarm" type="button" value="Cancel" url="../silencealarm.php?id=2042"></td>
    </tr>
</table>
4

3 回答 3

2

使用this虽然不要使用重复的ID

$(document).ready(function() { 
    $(":input[id='alarm']").click(function() {
        alert($(this).attr("url"));
    });
});
于 2013-06-14T16:29:17.780 回答
2

在处理程序中和内部使用自定义 HTML 属性前缀时data-*,它引用元素本身,因此只需使用$(this).data("url")

 $(":input[id='alarm']").click(function() {
        alert($(this).data("url"));
    });

不要使用重复的 id,这会使您的 HTML 无效,并且您的处理程序将仅附加到第一个实例,因此请将其更改为 class。

标记

<tr>
        <td width="50">2040</td>
        <td width="180">TEST-111110-123-R4</td>
        <td><input class="alarm" type="button" value="Cancel" data-url="../silencealarm.php?id=2040"></td>
    </tr>
        <td width="50">2042</td>
        <td width="180">TEST-111110-123-R6</td>
        <td><input class="alarm" type="button" value="Cancel" data-url="../silencealarm.php?id=2042"></td>
    </tr>

脚本

$(":input.alarm").click(function() {
        alert($(this).data("url"));
});

演示

于 2013-06-14T16:29:44.867 回答
0

只需简单地将您的代码更改为:

$(document).ready(function() { 
    $(":input[id='alarm']").click(function() {
        alert($(this).attr("url")); //or
        alert($(this).prop("url"));
    });
});
于 2013-06-14T16:30:06.527 回答