0

以下のコードを使用してhtmlを生成しているカミソリビューがありますが、すべて問題ありません

<ul>
        @foreach (var resx in Model.Resxs()) 
        {
            tempWidth = tempWidth + @resx.ChildSitePartVrsn.ResxVrsn.WidthInPx;
            temp = temp + 1;
            width = @resx.ChildSitePartVrsn.ResxVrsn.WidthInPx + "px"; 

            <li style="width:@width;">
                @if (tempWidth <= 960){
                    <a href="#tabs-@temp">@resx.ChildSitePartVrsn.SitePart.NameInUse</a>
                }
                else{           
                    <a href="#tabs-@temp" class="hide">@resx.ChildSitePartVrsn.SitePart.NameInUse</a>
                }
            </li>
        }
        @* needs to be inserted after the last visible tab. *@
        <li><input type="button" id="moreTabs"/></li>
    </ul>

そして、上記の生成されたliの特定の2つの間にボタンを持つliを挿入したいのですが、この下のコードがあります。firebug でスクリプトをデバッグするときにすべての値を取得していますが、要素は html で作成されていません。驚くべきことに、以前に取得した html の一部を失っています。私の要件ごと。

$("<li><button id=\"moretabs\"></button></li>")
                .before(
                    $("a.hide", that.element)                        
                        .first()
                        .parent("li")                        
                );

回避策はありますか........

4

2 に答える 2

1

before()要素を DOM 内の別の要素の前に挿入するため、新しい要素で呼び出しても DOM には何も挿入されません。

var li   = $('<li />'),
    btn  = $('<button />', {id:'moretabs'}),
    elem = $('a.hide').closest('li'); // actual element existing in the DOM

li.append(btn).insertBefore(elem);
// or
elem.before( li.append(btn) )
于 2013-06-05T13:25:27.953 に答える
0

append()代わりに使用してみてください

$("yourSelector").append("<li><button id='moretabs'></button></li>");
于 2013-06-05T13:25:15.213 に答える