使用类查找兄弟元素并用jQuery替换html内容

时间:2014-04-03 16:47:02

标签: javascript jquery html ajax

我不确定如何更新正确的div和点击的正确链接。我不认为我理解父母,兄弟,查找,上一页,下一页等的财产使用情况。

我使用AJAX提交表单,并且需要使用class' record-info'更新段落标记。然后点击课程' cancelas'。

的链接

AJAX:

$('form').on('submit', function(e){
    if($(this).attr('id') == 'editdelete'){
        var thisform = $(this);
        $.ajax({
            type: $(this).attr('method'),
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function() {
                var replaceText = thisform.find('input[name="extraedit"]').val();
                console.log(thisform.parent().find('.record-info').html());
                thisform.parent().find('.record-info').html(replaceText);
                thisform.parent().find('.cancelas').click();
            }
        });
        e.preventDefault();
    }
});

replaceText如果我在console.log中显示正确的信息,但是当我尝试获取'记录信息'段落,它显示为未定义。我已经尝试过.parent()。find(),. siblings(),. next(),. prev()以及介于两者之间的所有内容。

这是HTML结构:

<div class="catname record">
    <p class="record-info">Info is here</p>
    <p class="editmain">Edit</p>
    <p class="markmain">Mark</p>
    <form class="markas">FORM IS HERE</form>
    <div class="editas">
        <div>
            <form action="edit-delete.php" id="editdelete" method="post">
                <input name="extraedit" type="text">
            </form>
            <form action="edit-delete.php" id="editdelete" method="post">
                FORM CONTENT
            </form>
        </div>
    </div>
    <p class="cancelas">Cancel</p>
</div>

1 个答案:

答案 0 :(得分:4)

.record-info不是您的表单的兄弟,所以只是获取父级并在其中查找将无效。

尝试closest(),它将遍历DOM树,直到找到匹配项(父项只遍历一个级别,父级):

thisform.closest('.record').find('.record-info').html(replaceText);

触发点击同样如此:

thisform.closest('.record').find('.cancelas').click();

注意:我在.record使用了closest(),因为我认为它是“记录”中的公共类。 .closest('.catname') 案例中同样有效。

JSFiddle