1

テーブルから特定の名前を取得しようとしています。これが私のコードです:

$(document).ready(function () {
    $("#NotesAccessor").click(function () {
      var notes_name = $(this).document.getElementById("#user_table");
      alert(notes_name);
      run();
    });
});

上記は、#notesAccessor でテーブル行がクリックされた関連付けられたユーザー名にアクセスしようとしている場所です。

テーブル:

 .........
    <td>
        $csvusername
    </td>
.........
    <td>
    ";
      if ($checkNotes[1] == 'No')
    {
        echo "None";
    }
    if ($checkNotes[1] == 'Yes')
    {
            echo "<a href='#' id='NotesAccessor'>Click to access</a>";
    }
    echo "
    </td>
........

私の質問は、関連付けられている $csvusername を取得して、NotesAccessorこれを Jquery のダイアログに送信し、取得する必要があるその 1 人のメモを開く方法です。

これが理にかなっていることを願っています。

アップデート:

ここに完全な表があります:

<table class='results'>
    <tr class='firsttr' style='background:gray;'>
        <td>First Name</td>
        <td>Last Name</td>
        <td>Email</td>
        <td>Phone</td>
        <td>Username</td>
        <td>Password</td>
        <td>Status</td>
        <td>Combined Single Limit</td>
        <td>Bodily Injury Each Person</td>
        <td>Bodily Injury Each Accident</td>
        <td>Property Damage</td>
        <td>Address</td>
        <td>Notes</td>
        <td>#</td>
    </tr>"; $j = 0; while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { $val = 1; $csvfirst
    = $row; $csvfirstname = $csvfirst['firstname']; $csvlastname = $csvfirst['lastname'];
    $csvemail = $csvfirst['email']; $csvphone = $csvfirst['phone']; $csvusername
    = $csvfirst['username']; $csvpassword= $csvfirst['password']; $csvstatus
    = $csvfirst['status']; $csvnotes = $csvfirst['notes']; $csl = $csvfirst['Combinedlimit'];
    $bodyinj = $csvfirst['bodyinjur']; $eachacc = $csvfirst['bodyinjureachacc'];
    $propertydmg = $csvfirst['propertydmg']; // Select the current employees
    address $psql = "SELECT MailingAdrs FROM insuranceverificationdisclaimer
    WHERE TraineeUsername =:user"; $psth= $DBH->prepare($psql); $psth->execute(array(':user'
    => $csvusername )); while ($prow = $psth->fetch(PDO::FETCH_ASSOC)) { $pcheck
    = $prow; $address = $pcheck['MailingAdrs']; } if ($csvstatus != "No Longer
    Work Here" && $csvstatus == "Confirmed"){ //check to see if notes exist
    if (empty($csvnotes)) { $checkNotes = 0; } else { $checkNotes = 1; } $memberfirstnamearray[$j]
    = $csvfirstname; $memberlastnamearray[$j] = $csvlastname; $memberemailarray[$j]
    = $csvemail; $memberphonearray[$j] = $csvphone; $membercsl[$j] = $csl;
    $memberbodyinj[$j] = $bodyinj; $membereachacc[$j] = $eachacc; $memberpropertydmg[$j]
    = $propertydmg; $memberstatus[$j] = $csvstatus; $memberaddress[$j] = $address;
    $j++; $i++; echo "
    <tr>
        <td>$csvfirstname</td>
        <td>$csvlastname</td>
        <td>$csvemail</td>
        <td>$csvphone</td>
        <td class='user_table'>$csvusername</td>
        <td>$csvpassword</td>
        <td>$csvstatus</td>
        <td>$csl</td>
        <td>$bodyinj</td>
        <td>$eachacc</td>
        <td>$propertydmg</td>
        <td>$address</td>
        <td>"; if ($checkNotes == 0) { echo "None"; } if ($checkNotes == 1) { echo
            "<a href='#' id='NotesAccessor'>Click to access</a>"; } echo "</td>
        <td>$i</td>
    </tr>"; } }
</table>
4

2 に答える 2

2

純粋な JavaScript と jQuery を混在させている場合は、次のように解決できます。

まず、<td>$csvusername、 likeclass='td_with_csvusername'で識別するクラスを配置してから、次のようにします。

$(document).ready(function () {
    $(".NotesAccessor").on("click", function () {
        var td = $(this).parent().parent().find(".td_with_csvusername");
        alert(td.html());
    });
});
于 2013-02-10T00:09:10.720 に答える
1

出力 HTML の投稿は PhP バージョンよりも優れていますが、次のような HTML があると仮定します。

<table>
    <tbody>
        <tr>
            <td>UserName</td>
            <td><a href='#' id='NotesAccessor'>Click to access</a>"</td>
        </tr>
    </tbody>
</table>

次に、次のように、jQuery のparent()およびprev()を使用して、アンカーの親の前の兄弟を探すことができます。

$(document).ready(function () {
    $("#NotesAccessor").click(function () {
        var notes_name = $(this).parent().prev().html();
        alert(notes_name);
        //run();
    });
});

デモ- 一致するユーザー名列を調べる


上記の HTML がそうでない場合は、正確な出力を投稿してください。アンカーをクリックしたときにtd同じように一致するようにトラバースする方法を知ることが重要です。trそれがあなたが達成しようとしているものであると仮定します。

編集

今あなたのアップデートだけを見ました。すでに解決策があることは知っていますが、完全を期すために、将来のユーザーに役立つ場合に備えて、この回答に追加しました。

サンプル コードでは、 user-name cell に既に class がありますuser_table。代わりにそれを使用してターゲットにすることができます。また、 を使用して複数の行があると述べた場合、 ID が一意である必要があるか、無効な HTML であるため、を に#NoteAccessor変更する必要があります。さらに、jQuery は一致した ID を持つ最初の要素のみを返します。id="NoteAccessor"class="NoteAccessor"

最終的なスクリプトは簡単で、以前と同じように使用できますが、クラスセレクターを指定してprevAll()parent()を使用することもできます。

$(document).ready(function () {
    // using class ".NotesAccessor" instead of id "#NotesAccessor" 
    // as element is repeated in each tr
    $(".NotesAccessor").click(function () {
        var notes_name = $(this).parent().prevAll('.user_table').html();
        alert(notes_name);
    });
});

デモ-parent()とのprevAll('.user_table')


于 2013-02-10T00:06:17.357 に答える