1

因此,我在页面上添加了新添加的元素,这些元素被附加了 Jquery.live(),我现在想在添加这些元素之后更改这些元素的值。

所以像

   $("#questionForm").empty();
        $.get("questionCreator.html", function(data){
            $("#questionForm").append(data);

        });
        var index=$(this).parent().index();
        id = index; 
        var associatedQuestion = idQuestionAssociation[index];
        var associatedResponses = idResponsesAssociation[index];
        if(associatedQuestion != null){
            $(".questionInput").val(associatedQuestion);
        }

所以 .val() 调用,我认为它不起作用,因为最初没有 .questionInput 元素,这是附加的。我觉得我应该使用 .live、.delegate 或 .on,但我不确定我应该使用什么事件。

任何人都可以帮忙吗?

4

2 回答 2

0

尝试使用replaceWith更改内容,但调用$(".questionInput")也可以返回一个数组,因此最好循环遍历可能的元素 -除非它是唯一的,否则将其设置为 id 属性(#questionInput)以在不需要循环的情况下调用它。

$('.questionInput').each(function(i, obj) {
    $(this).replaceWith('I am replacing the content for .questionInput');
});

get这应该在它返回数据后进入函数内部。

于 2012-11-22T08:32:36.943 回答
0

$.get是异步的,这意味着您尝试匹配的元素还$(".questionInput")没有在 DOM 中。您应该将其余的 DOM 操作放在回调中。

    $.get("questionCreator.html", function(data){
        $("#questionForm").append(data);
        //change the values here
    });
于 2012-11-22T08:29:44.273 回答