从每个元素获取id值

时间:2011-06-20 17:53:35

标签: jquery

基本上我正在尝试调用一个函数getTableData来加载一个表并将其放在div tableContents内。

然后我要做的是从函数生成的每个th中获取id值。该表加载了正确的数据,但id值不提醒。我甚至在加载后立即发出警报,没有任何东西弹出......

    $(document).ready(function () {
        $('.tableNames').live('click', function (event) {
            $('#tableContents').load(getDBData('getTableData', '', $(this).text()), function () {
           //alert('here');
                $('#tableData th').each(function () {
                    var id = $(this).attr("id");
                    // compare id to what you want
                    alert(id);
                });
            });
        });
    });

我做错了什么?

<table id='tableData'>
<tr class='tableHeader'>
<th>Modified</th>
<th id='col1'>col1</th>
<th id='col2'>col2</th>
<th id='col3'>col3</th>
<th id='col4'>col4</th>
<th id='col5'>col5</th>
<th id='col6'>col6</th>
<th id='col7'>col7</th>
<th id='col8'>col8</th>
<th id='col9'>col9</th>
</tr>...

function getDBData(type, dbName, tableName) {

    $.ajax({
        type: "GET",
        url: "ajaxDBReturn.asp?type="+ type + "&dbName=" + dbName + "&tableName=" + tableName,
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            if(type == "getTables")
            {
                //result = "<table id='tableList'>" + result + "</table>";
                ($("#tableList").html(result));
            } else if (type == "getTableData") {
                ($("#tableContents").html(result));
            }else if (type == "getTableRelationship"){
                result = "<table id='listTableBody'>" + result + "</table>";
            }



        }
    });

}

2 个答案:

答案 0 :(得分:4)

据我快速阅读this。您的.load()函数应该获得url而不是完整的数据。如果这样做,那么可能导致没有实际添加到您的数据,因为load()方法如果没有获取带有url的字符串,则不会加载任何内容。

如果getDBData自己添加,那么就没有succes。您应该将您的succes函数改为getDBData,并在构建完表后调用该函数。

如果是这种情况,我建议像这样简单的全局函数调用:

$(document).ready(function () 
{
    $('.tableNames').live('click', function (event) 
    {
        // here is the change
        // do you really need to call $('#tableContents')?
        // you are probably also doing that in the function itself.
        // also give your success function to your home-made function
        getDBData('getTableData', '', $(this).text(), function()
        {
            $('#tableData th').each(function () 
            {
                var id = $(this).attr("id");
                // compare id to what you want
                alert(id);
            });
        });
    });
});

答案 1 :(得分:0)

如果页面呈现时#tableData不存在,或者当页面呈现时它存在但没有任何th元素,那么each函数将没有任何内容迭代。如果在加载数据时创建或修改了#tableData,那么您需要使用delegate将函数绑定到它。