当有许多相同的类时,如何更新div的内容?

时间:2013-10-18 18:48:25

标签: jquery

我希望有一部分div,每个div都可以用按钮更新。我有按钮工作和信息发送到数据库与jquery中的.post。发送我想要更新的项目的值我使用'this'所以这不是问题。但由于我有同一类的个别div,.done函数如何知道哪些更新?我还在学习如何做这种事情。提前谢谢!

$(".confirm-request-show").click(function(e) {
    e.preventDefault();
    $.post("confirmrequest.php",
    {
        requestID: $(this).val(),
        action: 'confirm'
    })
    .done(function() {
        var id = $(this).val();
        $('#confirm-request-div-' + id).empty().load('confirmrequestdiv.php?requestID=' + id );
        $(this).attr("disabled", true);
    })
});

更新:让它工作,我所要做的就是在done()函数之前声明id。不知道为什么,也许有人可以向我解释这个细微差别?

$(".confirm-request-show").click(function(e) {
    e.preventDefault();
    var id = $(this).val();
    $.post("confirmrequest.php",
    {
        requestID: id,
        action: 'confirm'
    })
    .done(function() {          
        $('#confirm-request-div-' + id).empty().load('confirmrequestdiv.php?requestID=' + id );
        $(this).attr("disabled", true);
    })
});

3 个答案:

答案 0 :(得分:0)

通常这是您要使用ID的地方。只需为要更新唯一ID的div提供,然后在JavaScript中使用$('#whateverIDyouGaveTheDiv')

答案 1 :(得分:0)

如果.confirm-request-show按钮嵌套在.confirmrequestdiv内,您可以执行以下操作:

HTML:

<div class="confirmrequestdiv">
    <input type="submit" class="confirm-request-show" value="1" />
</div>

JS:

$(this).closest('.confirmrequestdiv').empty().load( "confirmrequestdiv.php?showID=" + $(this).val() );

这是使用已单击的按钮作为起点,并且正在寻找具有.confirmrequestdiv类的祖先。

如果您的按钮没有嵌套在div中,您可以找到这样的共同祖先:

HTML:

<div class="commonancestor">
    <div class="confirmrequestdiv">
    </div>
    <input type="submit" class="confirm-request-show" value="1" />
</div>

JS:

$(this).closest('.commonancestor').find('.confirmrequestdiv').empty().load( "confirmrequestdiv.php?showID=" + $(this).val() );

如果元素没有方便的共同祖先(或者如果所有confirmrequestdiv类都在公共容器中,则可以采用id方法:

HTML:

<div>
    <div class="confirmrequestdiv" id="confirmrequestdiv-1"></div>
    <div class="confirmrequestdiv" id="confirmrequestdiv-2"></div>
    <div class="confirmrequestdiv" id="confirmrequestdiv-3"></div>
    <div class="confirmrequestdiv" id="confirmrequestdiv-4"></div>
</div>
<div>
    <input type="submit" class="confirm-request-show" value="1" />
    <input type="submit" class="confirm-request-show" value="2" />
    <input type="submit" class="confirm-request-show" value="3" />
    <input type="submit" class="confirm-request-show" value="4" />
</div>

JS:

var id = $(this).val();
('#confirmrequestdiv-' + id).empty().load("confirmrequestdiv.php?showID=" + id);

但要真正帮助你,我们需要看到HTML结构。

答案 2 :(得分:0)

当我不得不解决这个问题时,我只创建了一个与每个div元素相关联的唯一ID。例如,id =“element1”然后我会将ID的数字部分传递给javascript,就像onclick =“function(1)”一样。但这需要在div元素中使用onclick事件。

然后在你的jquery中你可以将两者联系起来$('#element'+ id)......等等。