views:

22

answers:

1

After calling the server and turning the data it returns into a table. I insert it into the page using jQuery's .html() syntax. After that the data appears in the page but I can't manipulate it using jQuery.

heres the code:

<html>
<head>
    <title>testJavaScript</title>

    <script type="text/javascript" src="jquery-1.4.2.js"></script>

    <script type="text/javascript">

    function makeTable(data) {

        var htmlOut = "<table id=\"AjaxTable\">";

        for (x in data) {
            htmlOut += "<tr>";
            for (y in data[x]) {
                htmlOut += "<td>"+data[x][y]+"</td>";
            }
            htmlOut += "</tr>";
        }

        htmlOut += "</table>";

        return htmlOut;
    }

    function getValue() {
        return $("#MyText").val()
    }

    $(document).ready(function () {

        $("img").hover(function () { //This dosent work on the data returned from the server
            $(this).hide(1000)
            //$(this).css({'background-color': '#357EC7', 'border': '2px solid #2B60DE'});
        })

        $("#populateDrop").click(function () {
            $.getJSON('http://127.0.0.1:5000/ajaxTest/json?num='+ getValue() +'&callback=?', function(data) {
                $(".result").html(makeTable(data.data));
            })

        })
    })
    </script>
</head>

<body>
    <img src="http://www.sharejs.com/code/windows/light-window/gallery/1-nature.jpg" width="50" height="50" /></br>
    <form>
    <input id="MyText" type="text" value="15" />
    </form>
    <a href="#" id="populateDrop">Populate!</a></br>
    <div class="result"></div>
</body>

A: 

You need to use live instead for dynamic data:

$("img").live('hover', function () {
 $(this).hide(1000);
});

More Info:

Sarfraz
Cool, Thanks for the fast response!
Joshkunz
@Joshkunz: You are welcome :)
Sarfraz