0

这个线程是我上一期之后的第二个问题。将 on click 事件绑定到我的 show-chart 函数后,我仍然需要知道用于获取正确图表数据的员工 ID 的值。

是否可以将员工 ID 传递给 showChartByEmpId(i) ?

HTML

<table id="empTable" class="tablesorter">
    <thead>
        <tr>
            <th> Employee ID </th>
            <th> Name </th>
            <th> Department  </th>
            <th> Title  </th>
            <th> Show Chart </th>
        </tr>
    </thead>


    <tbody>
        <tr>
            <td> 101 </td>
            <td> John </td>
            <td> R&D </td>
            <td> Engineer </td>
            <td> <button class="doPieChart"> Pie Chart </button> </td>
        </tr>
        <tr>
            <td> 102 </td>
            <td> David </td>
            <td> R&D </td>
            <td> Engineer </td>
            <td> <button class="doPieChart"> Pie Chart </button> </td>
        </tr>
    </tbody>
</table>
<div class="secondary"> </div>

JS

function drawPieChart(i) {
    $('.secondary').html('<div id="chart_div" class="div'+i+'">my graph '+(i+1)+' in fancybox</div>');
}

function showChart(i) {
    drawPieChart(i);
}

function showChartByEmpId(i) {
    showChart(i);
}

jQuery(function ($) {
    //How to get emp Id here?
    $(".doPieChart").each(function (i) {
        $(this).on("click", function () {
            showChartByEmpId(i);
            $.fancybox("#chart_div");
        }); // on click
    }); // each
});

这是我在 JSFIDDLE上的示例

4

3 回答 3

1

使用它在点击函数中获取emp ID

 var empID = $(this).closest('tr').find('td:first').text();

你不需要 .each()

$('.doPieChart').on("click", function () {
    var empID = $(this).closest('tr').find('td:first').text();
    showChartByEmpId(empID);
    $.fancybox("#chart_div");
});
于 2013-09-03T08:04:54.347 回答
0

或者,只需将此 var 添加到您现有的代码中

var empID = $.trim( $(this).parent().siblings("td").eq(0).text() );

所以

jQuery(function ($) {
    //How to get emp Id here?
    $(".doPieChart").each(function (i) {
        $(this).on("click", function () {
            var empID = $.trim( $(this).parent().siblings("td").eq(0).text() );
            showChartByEmpId(empID);
            $.fancybox("#chart_div");
        }); // on click
    }); // each
});

JSFIDDLE

注意:我总是更喜欢该.eq()方法而不是伪类:first,因为它(可以说)更快。

于 2013-09-03T18:57:56.000 回答
0

这应该可以解决您的问题:

var EmpId;
jQuery(function ($) {
    //How to get emp Id here?
    $(".doPieChart").each(function () {
        $(this).on("click", function () {
            EmpId = $(this).closest('tr').find('td:first').text();
            showChartByEmpId(EmpId);
            $.fancybox("#chart_div");
        }); // on click
    }); // each
});

小提琴:http: //jsfiddle.net/malvaniya_shakti/bqs52/12/

于 2013-09-03T08:28:12.707 回答