jQuery:children count = 0和ajax

时间:2012-06-18 12:09:07

标签: javascript jquery

我正在研究一个从服务器获取元素列表的jQuery,将它附加到一个元素,然后在新附加的元素中循环以转换它们(使它们成为jEditable)。

我遇到循环问题。附加工作正常,所以我有一个元素列表,如:

<div id="innerModal">
    <label id="exampleTitle">Title :</label>
    <label id="exampleField" class="ftext">Value</label>
</div>

然后我尝试循环:

function makeListEditable(element, type){
    //I checked here that the element sent is well '#innerModal'
    alert($(element).children().length);
    $(element).children().each(function() {

        if( $( this ).is( 'ftext' ) ){
            makeEditable( $( this ), type, '', '' );
        }
    });
}

警告打印“0”。

这个问题来自哪里?我该如何解决?

编辑:这是makeListEditable的调用:

getFormOnElement(//Gets the form and appends it
    "getorganisationeditable/"+curOId,
                        "#innerModal"
    );
    makeListEditable('#innerModal');

提前致谢!

3 个答案:

答案 0 :(得分:2)

由于ajax是异步的,因此它不会等到元素被追加并执行makeEditable。由于ajax可能未必完成,因此该元素没有子元素。将makeEditable移动到ajax调用的成功回调

答案 1 :(得分:0)

ftext是一个类,需要'dot'.is(".ftext")

答案 2 :(得分:0)

添加其他类似的内容:

alert($(element).text());

alert($(element).html());

所以你可以知道你的选择器是否正常工作。