Javascript 仍然没有添加到DOM中,但是如果插入了和alert/confirm,则获取标记ID

Javascript 仍然没有添加到DOM中,但是如果插入了和alert/confirm,则获取标记ID,javascript,jquery,Javascript,Jquery,我有一段jquery/javascript,我不明白为什么会发生这种情况,我应该如何修复它。 带有ID=“GypPi++num”的标签是用Ajax加载的,所以它似乎还没有被添加到DOM中,有趣的是如果我在中间放置一个警报,函数就不起作用了,任何人都可以解释警报在那里做什么,我应该做什么来获得DOM中的ID,这样jQuery可以计算长度为1? 当然,如果我得到任何其他没有用ajax加载的id,它就可以工作了 $(document).ready(function(){ $(function

我有一段jquery/javascript,我不明白为什么会发生这种情况,我应该如何修复它。 带有ID=“GypPi++num”的标签是用Ajax加载的,所以它似乎还没有被添加到DOM中,有趣的是如果我在中间放置一个警报,函数就不起作用了,任何人都可以解释警报在那里做什么,我应该做什么来获得DOM中的ID,这样jQuery可以计算长度为1? 当然,如果我得到任何其他没有用ajax加载的id,它就可以工作了

$(document).ready(function(){

    $(function() {
    var hash = window.location.hash;
    var num = hash.replace("#subcat_group_","");
    $('[id*="subcat_group_"]').hide();

            // here the "id" loaded with ajax seems still not loaded.
    var len = $("#group_"+num).length;
           //Here variable "len" still 0 

           /***** with this alert works , just an alert anything inside

           alert(num);

           with this alert works *****/ 

          /*******if i use "len" here still 0 even if alert is before *******/
           if( $("#group_"+num).length === 1){


          /******if i get again for id lenght with alert before , then is 1 ******/              
        if( $("#group_"+num).length === 1){
        var group_name = $("#group_"+num).attr("title");
        swapContentV1(num,group_name);
    }
    $("#subcat_group_"+num).show();
    });

});

谢谢。

警报将强制脚本等待。。。等待您的响应,等待Ajax调用完成。如果没有警报,您看起来“太早”——Ajax还没有完成


正如shoogle在评论中建议的那样,您应该将代码放入success函数中

好的,您的ajax功能在哪里??最重要的是,为什么您有两个
document.ready
功能<代码>$(文档).ready(函数(){和
$(函数()){
是一样的……如果你发出警报,它会起作用,因为当你在警报上单击OK时,ajax调用已经完成。我建议你在ajax调用中将代码移到“成功”位置听起来像是一个异步问题,你可能需要添加一些回调或将代码放在ajax完整函数中。Yeap,非常有用,谢谢大家