使用jQuery选择以前的td文本

时间:2012-03-22 21:38:31

标签: jquery jquery-selectors

嗨,我有一张 td 表格,我有文字,另一张 td 我有选择按钮

单击选择按钮,我需要选择之前的 td文本的文本。

我知道我可以用.prev()做到这一点,但我不熟悉使用该方法可以任何人帮助我。

我的剧本

function ReLoadMedications(mid) {
        var ProductName = "This shouled get the value of prev td text";
        var dea = $("input[type='button'][mid='"+mid+"']").attr('id');
        var mid = $("input[type='button'][mid='" + mid + "']").attr('mid');
        var form = $("input[type='button'][mid='" + mid + "']").attr('form');
        var href = $("input[type='button'][mid='" + mid + "']").attr('href');
        var con = false;
        var fax = false;
        alert(ProductName + "\n" + dea + "\n" + mid + "\n" + form + "\n" + href + "\n" + con + "\n" + fax);
}​

我的代码位于JS Fiddle,以及下方:

<div class="t-widget t-grid" id="TherapeuticAltGrid">
    <table cellspacing="0">
    <colgroup><col style="width:200px"><col></colgroup>
    <thead class="t-grid-header">
    <tr>
        <th class="t-header" scope="col" style="display:none">
            <a class="t-link" href="/BenefitsFormulary/HealthPlanInformation?PatientID=17&amp;MedicationID=6235&amp;MedicationName=LIPITOR%20EQ%2010MG%20BASE%20TABLET&amp;isFax=false&amp;form=TABLET&amp;TherapeuticAltGrid-orderBy=MedicationID-asc">Medication ID</a>
        </th>
        <th class="t-header" scope="col">
            <a class="t-link" href="/BenefitsFormulary/HealthPlanInformation?PatientID=17&amp;MedicationID=6235&amp;MedicationName=LIPITOR%20EQ%2010MG%20BASE%20TABLET&amp;isFax=false&amp;form=TABLET&amp;TherapeuticAltGrid-orderBy=Medication-asc">Medication</a>
        </th>
        <th class="t-header" scope="col">
            <span class="t-link">&nbsp;</span>
        </th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td style="display:none;">
            1147
        </td>
        <td>
            DACTINOMYCIN INJECTABLE 0.5MG/VIAL
        </td>
        <td class="t-last">
            <input type="button" value="Select" class="MedicationClicked button" mid="1147" id="0" form="INJECTABLE" onclick="ReLoadMedications(1147)">
        </td>
    </tr>
    <tr class="t-alt">
        <td style="display:none;">
            1439
        </td>
        <td>
            PROVENTIL SOLUTION EQ 0.5% BASE
        </td>
        <td class="t-last">
            <input type="button" value="Select" class="MedicationClicked button" mid="1439" id="0" form="SOLUTION" onclick="ReLoadMedications(1439)">
        </td>
    </tr>
    <tr>
        <td style="display:none;">
            1605
        </td>
        <td>
            EMETE-CON INJECTABLE EQ 50MG BASE/VIAL
        </td>
        <td class="t-last">
            <input type="button" value="Select" class="MedicationClicked button" mid="1605" id="0" form="INJECTABLE" onclick="ReLoadMedications(1605)">
        </td>
    </tr>
    </tbody>
    </table>
    <div class="t-grid-pager t-grid-bottom">
        <div class="t-status">
            <a class="t-icon t-refresh" href="/BenefitsFormulary/HealthPlanInformation?PatientID=17&amp;MedicationID=6235&amp;MedicationName=LIPITOR%20EQ%2010MG%20BASE%20TABLET&amp;isFax=false&amp;form=TABLET">Refresh</a>
        </div>
        <div class="t-pager t-reset">
            <a class="t-link t-state-disabled" href="#"><span class="t-icon t-arrow-first">first</span></a><a class="t-link t-state-disabled" href="#"><span class="t-icon t-arrow-prev">prev</span></a>
            <div class="t-numeric">
                <span class="t-state-active">1</span><a class="t-link">2</a><a class="t-link">3</a><a class="t-link">4</a><a class="t-link">5</a><a class="t-link">6</a><a class="t-link">7</a><a class="t-link">8</a><a class="t-link">9</a><a class="t-link">10</a><a class="t-link">...</a>
            </div>
            <a class="t-link" href="#"><span class="t-icon t-arrow-next">next</span></a><a class="t-link" href="#"><span class="t-icon t-arrow-last">last</span></a>
        </div>
        <div class="t-status-text">
            Displaying items 1 - 3 of 41
        </div>
    </div>
</div>

2 个答案:

答案 0 :(得分:32)

修改您的内联代码,例如

onclick="ReLoadMedications(1147,this)

和功能

function ReLoadMedications(mid,$this) {
    console.log($this);
    var pn = $($this).closest('td').prev('td').text();
    console.log(pn);
    //rest of your code 

DEMO

答案 1 :(得分:1)

最简单的解决方案就像他说的那样,将内联代码修改为this

除外

然后在您的代码中,您可以轻松地执行

var ProductName = $(ele).parent().prev().text();

其中ele是您的函数function ReLoadMedications(mid, ele)

中的参数

然后你也可以替换:

    var dea = $("input[type='button'][mid='"+mid+"']").attr('id');
    var mid = $("input[type='button'][mid='" + mid + "']").attr('mid');
    var form = $("input[type='button'][mid='" + mid + "']").attr('form');
    var href = $("input[type='button'][mid='" + mid + "']").attr('href');
    var con = false;
    var fax = false;

    var dea = $(ele).attr("id");
    var mid = $(ele).attr("mid");
    var form = $(ele).attr("form");
    var href = $(ele).attr("href");
    var con = false;
    var fax = false;