jquery ajax调用多个按钮单击事件

时间:2011-05-27 04:33:46

标签: jquery jquery-selectors

以下是我生成的html代码。在用户点击激活按钮时,我想知道应该是jquery代码来触发ajax请求时遇到了一些麻烦。

<span class="vId">
    <input type="hidden" name="id" id="7" />
    <input type="hidden" name="ClientID" id="026CC6D7-34B2-33D5-B551-CA31EB6CE345" />
    <input class="textbox" type="text"   name="key" />
    <input class="button"  type="button" name="Activate" value="Activate" />
</span>
<span class="gc_Name">Bartlett-White</span>             
<span class="vId">
    <input type="hidden" name="id" id="2" />
    <input type="hidden" name="ClientID" id="000214EE-0000-0000-C000-000000000046" />
    <input class="textbox" type="text" name="key" />
    <input class="button" type="button" name="Activate" value="Activate" />
</span>
<span class="gc_Name">Landingham Bends</span>             
<span class="vId">
    <input type="hidden" name="id" id="8" />
    <input type="hidden" name="ClientID" id="049F2CE6-D996-4721-897A-DB15CE9EB73D" />
    <input class="textbox" type="text" name="key" />
    <input class="button" type="button" name="Activate" value="Activate" />
</span>
<span class="gc_Name">Russell River</span>             

我的想法如下:

<script type="text/javascript">
$().ready(function(){
    $.each($(".button")
      .click(function() {
            $.ajax({
                url:  '{site_url}index.php/activate',
                type: 'POST', 
                dataType: 'html',
                data: {
                    key: $(this).sibling(':first'),
                    idclient: $(this).sibling(':first:next'),
                },
                success: function(result) {

                }
            });
        });
    )
});
</script>

虽然我知道我的jquery不起作用,但我有点难过......任何帮助都会非常感激。正如我所说,每当用户点击激活按钮时,我都会尝试向激活控制器发送ajax请求,但是我也需要在同一范围内发送隐藏数据。

再次感谢您的帮助。

2 个答案:

答案 0 :(得分:7)

<script type="text/javascript">
$().ready(function(){
    $(".button").click(function() {
        var button = this;
        $.ajax({
            url:  '{site_url}index.php/activate',
            type: 'POST', 
            dataType: 'html',
            data: {
                key: $(button).siblings('[name="id"]').attr("id"),
                idclient: $(button).siblings('[name="ClientId"]').attr("id"),
            },
            success: function(result) {

            }
        });
    });
});
</script>

答案 1 :(得分:1)

$(".button").click(function(e) {
    e.preventDefault();
    var that = this;
    $.ajax({
        url: '{site_url}index.php/activate',
        type: 'POST',
        dataType: 'html',
        data: {
            key: $(that).prev().attr('id'),
            idclient: $(that).siblings('[name="clientID"]').attr('id'),
        },
        success: function(result) {
            alert(result);
            $(that).blahblah();
        }
    });
});
  1. 无需循环按钮。 $(".button").click(...将使用'button'类隐式将处理程序附加到所有元素。
  2. 您需要将上下文分配给变量,以便在$.ajax调用的回调/范围内可以访问该变量。
  3. 理想情况下,您应该使用event.preventDefault()
  4. 来阻止表单提交
  5. 您的遍历不正确,据我所知,没有:next伪选择器。