0

多次元のjsonオブジェクトをhtmlリストに変換する関数を作成しました:http: //jsfiddle.net/KcvG6/

  1. 関数がリストを2倍にするのはなぜですか?更新: http: //jsfiddle.net/KcvG6/2/

  2. 実行するロジックについて何か改善はありますか?

  3. 元のJSONオブジェクトは、url属性にurlを生成します。これらのURLは、特定のスラッグで生成されます。指定されたスラッグがまだ使用できない場合(ユーザーが何も選択していない場合、またはリンクをレンダリングしてはならないものを他に選択していない場合:

    'image': {
        'index': {
            'name': 'Show all images',
            'url': Routing.generate('AcmeImageBundle_Image_index')
        },
        'new': {
            'name': 'Add new image',
            'url': Routing.generate('AcmeImageBundle_Image_new')
        },
        'edit': {
            'name': 'Edit selected image',
            'url': Routing.generate('AcmeImageBundle_Image_edit', { 'slug': imageSlug })
        },
        'delete': {
            'name': 'Delete selected image',
            'url': Routing.generate('AcmeImageBundle_Image_delete', { 'slug': imageSlug })
        }
    }
    
4

2 に答える 2

1

.children()が呼び出されるため、2回発生します。各子要素をリストに置き換えています。代わりに、最初の子を選択して置き換えます。

$(container).children().first().replaceWith(renderList(objectCollection));

http://jsfiddle.net/KcvG6/1/

要素を削除する必要がある場合<p>は、個別に削除してください。

于 2012-05-25T15:09:23.417 に答える
1

http://jsfiddle.net/VF2sm/

ドキュメント内のを置き換えたいだけだとするとul、呼び出す.childrenだけでは不十分です。を使用する必要があります.find。そうしないと、現在2つあるすべての子が置き換えられます。

$(container).find('ul').replaceWith(renderList(objectCollection));

または、コンテンツ全体を簡単に消去して、次のようにリストに置き換えることができます。

$(container).html(renderList(objectCollection));

あなたの機能の質に関してはrenderList()、私はそれでいいと思います。

于 2012-05-25T15:13:18.940 に答える