1

我有多个由 php 从数据库生成的锚标记,如下所示

<a href="#" id="reply_doc" data-doc_value="1"></a>
<a href="#" id="reply_doc" data-doc_value="2"></a>
<a href="#" id="reply_doc" data-doc_value="3"></a>

现在我得到了 JQuery 脚本

$(document).ready(function(){
  $("#reply_doc").click(function () {
    var a = $(this).data("doc_value");
    if (a != "") {
        $.ajax({
            type: "POST",
            url: "ajax_check/",
            data: "doc_reply=" + a,
            success: function (b) {
                alert(a+' ok. '+b)
            }
        });
    }
 });
});

这仅适用于第一个锚标签。当单击特定锚点时,我如何为每个锚点标记执行此操作,只有该锚点会受到影响,并且该特定值将使用 ajax 发送。

任何帮助将不胜感激。提前致谢。

4

4 回答 4

3

id属性是一个标识符。顾名思义,这意味着它必须是唯一的,以便它可以识别单个元素。为了识别多个元素,您需要使用一个类来代替:

<a href="#" class="reply_doc" data-doc_value="1"></a>
<a href="#" class="reply_doc" data-doc_value="2"></a>
<a href="#" class="reply_doc" data-doc_value="3"></a>

$(".reply_doc").click(...);
于 2013-01-31T11:24:31.357 回答
1

将 更改idclass,并将您的选择器更改为".reply_doc"

您的 html 当前无效,因为该id属性应该是唯一的。尽管当您违反此规则时浏览器不会上下跳动抱怨,但当您尝试通过它选择一个元素时,id它只会找到第一个(或者,在某些浏览器中,最后一个)。

如果假设您无法控制 html 结构,则可以选择所有具有该data-doc_value属性的锚元素:

$("a[data-doc_value]")...
于 2013-01-31T11:23:58.907 回答
0

元素不能有相同的 id 所以在同一个类上绑定事件。

a href="#" class="option" id="reply_doc" data-doc_value="1"></a>
<a href="#" class="option" id="reply_doc" data-doc_value="2"></a>
<a href="#" id="reply_doc" class="option" data-doc_value="3"></a>

jQuery 脚本

$(document).ready(function(){
  $(".option").click(function () {
    var a = $(this).data("doc_value");
    if (a != "") {
    $.ajax({
        type: "POST",
        url: "ajax_check/",
        data: "doc_reply=" + a,
        success: function (b) {
            alert(a+' ok. '+b)
        }
    });
}
});
});
于 2013-01-31T11:26:51.497 回答
0

再次编辑 DEMO

<a href="#" class="reply_doc" data-doc_value="1">111</a><br>
<a href="#" class="reply_doc" data-doc_value="2">222</a><br>
<a href="#" class="reply_doc" data-doc_value="3">333</a><br>

$(document).ready(function(){
  $(".reply_doc").click(function () {
    var a = $("a.reply_doc").attr("data-doc_value"); //<-- Add this
    if (a != "") {
    $.ajax({
        type: "POST",
        url: "ajax_check/",
        data: "doc_reply=" + a,
        success: function (b) {
            alert(a+' ok. '+b)
        }
    });
  }
 });
});

这样每次“ a ”都会在点击时具有包含在data-doc_value中的唯一值

于 2013-01-31T11:29:34.817 回答