2011-08-01 9 views
2

非常によく似た質問がすでにhereと尋ねられましたが、何らかの理由で単に「null」と出力されます。jquery ajax出力からIDでdivを検索

idによってajax出力からdiv htmlを検索しようとしています。以下は私のスクリプトです。

// LOAD NAVIGATION 
$.ajax({ 
    type: 'POST', 
    url: 'includes/content/bookingsystem/b_navigation.php', 
    data: thisButtonType + '=true&loadNav=date', 
    success: function(output) { 

    alert(output); // Outputs correctly two divs #navDay, and #navMonth 

    alert($(output).find('#navDay').html()); // Results into "null" 

    $('#navDay').html($(output).find('#navDay').html()); // Results in an empty div, since it overwrote the html with 'null' - nothing. 

    //$('#navDay').replaceWith($('#navDay', output)); // Same here - nada. 
    //$('#navMonth').html($(output).find('#navMonth').html()); 

    } 

}); 

最初の警告(出力)の結果この:

<div id="navDay">Im day nav!</div> 
<div id="navMonth">Im month nav!</div> 

答えて

4

あなたは.find()$(selector, context)を使用できることを期待していた場合、外側のdivにあなたの2つのdivをラップする必要がある - それらの機能だけを検索します子孫ノードであり、実際の親なしでHTMLに2つの兄弟ノードがあります。

ラッピングサーバー側で行うことも、.wrap()を使用することもできます。

さらに、.html()関数は、タグ自体ではなく、内部タグの内容を返します。あなたの以前からこのラインどの時点で

<div> 
    <div id="navDay">Im day nav!</div> 
    <div id="navMonth">Im month nav!</div> 
</div> 

非:

テキストだけあなたの意図は、全体の要素を交換することであること(.replaceWithの使用に基づいて)と仮定し、いない、私はのために行くだろう、

$('#navDay').replaceWith($('#navDay', output)); 
+0

アメージングを試してみてくださいあなたの全体の多くを感謝:作業のコードは、あまりにも動作します。それがそのように包まれなければならないことに気付かなかった。 – Dusty

+0

@Alnitakが示唆しているように、 'output'に' .wrap() 'を正しく実行する方法を見つけることができませんでした。私は '.frap()'をすることができるように '.wrap()'しようとしましたが、どこにも行きませんでした。 http://stackoverflow.com/a/400232/923817で提案された '.filter()'を使って、別のルートを見ていきました。 –

0

この

// LOAD NAVIGATION 
$.ajax({ 
    type: 'POST', 
    url: 'includes/content/bookingsystem/b_navigation.php', 
    data: thisButtonType + '=true&loadNav=date', 
    success: function(output) { 

    //alert(output); // Outputs correctly two divs #navDay, and #navMonth 

    //alert($(output).find('#navDay').html()); // Results into "null" 

    $('#navDay').html($('#navDay', $(output).wrap("<div />")).html()); // Results in an empty div, since it overwrote the html with 'null' - nothing. 

    //$('#navDay').replaceWith($('#navDay', output)); // Same here - nada. 
    //$('#navMonth').html($(output).find('#navMonth').html()); 

    } 

}); 
関連する問題