簡體   English   中英

無法使用jQuery(JavaScript)附加html

[英]not able to append html using jQuery (JavaScript)

在這個jQuery插件中:

http://www.stahs.org.uk/jquery.infinitecarousel.bak

有這行:

            $(obj).append('<div id="textholder'+randID+'" class="textholder" style="position:absolute;bottom:0px;margin-bottom:'+-imgHeight*o.textholderHeight+'px;left:'+$(obj).css('paddingLeft')+'"></div>');

問題是當它在此div中轉儲文本節點時,它會與div的頂部對齊。 我希望文本與div的底部對齊。 因此,我決定在此div中創建另一個div:

$(obj).append('<div id="textholder'+randID+'" class="textholder" style="position:absolute;bottom:0px;margin-bottom:'+-imgHeight*o.textholderHeight+'px;left:'+$(obj).css('paddingLeft')+'"></div>');
            console.log($('#textholder'+randID));
            $('#textholder'+randID).append('<div style="display:table-cell; height: 94.25px; width: 1000px; vertical-align:bottom;"></div>'); 

控制台輸出以下內容:

[div#textholder35196647.textholder]
[div#textholder62315889.textholder]
[div#textholder95654959.textholder]

但是,我上面的追加無法正常工作。 嵌套的div永遠不會顯示,因此當我以后執行此操作時:

                    if(t != null)
                {
                    $('#textholder'+randID+' div').html(t).animate({marginBottom:'0px'},500); // Raise textholder
                    showminmax();
                }

因為嵌套div永遠不會創建,所以看不到任何文本。

所以我非常困惑。 如果您查看原始插件,則此行有效:

 $('#textholder'+randID+' div').html(t)

正如我建議的那樣,當我在創建它后立即添加它時,如何才能在此處定位正確的div?

這也不起作用:

                var $texthold = jQuery('<div id="textholder'+randID+'" class="textholder" style="position:absolute;bottom:0px;margin-bottom:'+-imgHeight*o.textholderHeight+'px;left:'+$(obj).css('paddingLeft')+'"></div>');
            $(obj).append($texthold);
            $texthold.append('<div></div>')

感謝您的回復。

這聽起來雖然也許randID已經在之間修改$(obj).append ......行,讓您住得$('#textholder'+randID) ...線。 您確定兩行的randID的值相同嗎?

您確定$(obj)確實指向您要附加的元素嗎? 為了以防萬一,您可能想嘗試另一種方法:

$('<div id="textholder'+randID+'" class="textholder" style="position:absolute;' 
    +'bottom:0px;margin-bottom:'+(-imgHeight*o.textholderHeight)
    +'px;left:'+$(obj).css('paddingLeft')+'"></div>'
).appendTo(obj);

嘗試:

$(obj).after('html');

文檔在這里

看來這可行:

            function showtext(t)
            {

                if(t != null)
                {   

                    if(typeof $('#textholder'+randID).find('div')[0] == 'undefined'){
                        $('#textholder'+randID).append('<div style="display:table-cell; height: 94.25px; vertical-align:bottom;"></div>');
                    }

                    $('#textholder'+randID+' div').html(t);

                    $('#textholder'+randID).animate({marginBottom:'0px'},500); // Raise textholder
                    showminmax();

                }
            }

我不得不使用typeof來檢查div是否已聲明,這簡直是瘋了。 為什么插件的作者決定將整數隨機分配為div的ID,這超出了我的范圍。 這樣,看來javascript很難保留隨機創建的ID。 這是我對我可以想到的異常行為的唯一解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM