1

やあみんな、私はphpで埋められたリストを持っています、そしてここにレイアウトがあります:

<table>
     <tr>
        <td>
        ....
        <td>

    </tr>

    <tr class='firsttr' style='background:gray;'>
     <td>Remove selected</td>
     <td>First Name </td>
     <td>Last Name </td>
     <td>Email </td>
     <td>Phone </td>
     <td>Username </td>
     <td>Password </td>
     <td>Status </td>
     <td>Status Change Date</td>
     <td>#</td>
    </tr>


       <tr class='search-fade'> <!-- this is the part that I need to fade out based on which button was clicked for that user. -->
              <td>
        <input type='button' value='Remove employee'  name='cancelmember' class='cancelmember' />
      </td>
        //....table data    
               <td>
               $csvusername
    <input type='hidden' value='$csvusername'  name='username' class='removeemp-user'/>
    </td>                           
          </tr>                         
</table>

これが私のJqueryです:

$(".cancelmember").click(function () {
        remove_name = $(this).parent().parent().find(".removeemp-user");


        $.ajax({
        type: "POST",
        dataType: "json",
        url: '/pcg/removemem.php',
        data: {
            'username': remove_name.val()
        },
        success: function(){
            alert("Employee Removed"),
            $(this).find(".search-fade").fadeOut()
        }
      });
    });

上記のコードはうまく機能します。フェードアウトする方法がわかり<tr class='search-fade'> ません。手を貸していただければ幸いです。

デビッド

4

4 に答える 4

3

成功関数内で使用できるように、要素をキャッシュする必要があります。ボタンはtrの子孫であるため、テーブルの行を見つけるには、DOMツリーを下ではなく上に移動する必要があります。

$(".cancelmember").click(function () {
    remove_name = $(this).parent().parent().find(".removeemp-user");
    var $this = $(this); // <-- cache the current element

    $.ajax({
        type: "POST",
        dataType: "json",
        url: '/pcg/removemem.php',
        data: {
            'username': remove_name.val()
        },
        success: function () {
            alert("Employee Removed"),
            $this.closest(".search-fade").fadeOut(); // <-- use closest since button is descendant of table row
        }
    });
});
于 2013-02-15T17:16:00.887 に答える
1

これを試して、

$(".cancelmember").click(function () {
        remove_name = $(this).parent().parent().find(".removeemp-user");
        var $this = $(this); //Make sure this is parent element not button. You may have to adjust the element here

        $.ajax({
        type: "POST",
        dataType: "json",
        url: '/pcg/removemem.php',
        data: {
            'username': remove_name.val()
        },
        success: function(){
            alert("Employee Removed"),
            $this.find(".search-fade").fadeOut()
        }
      });
    });
于 2013-02-15T17:04:12.863 に答える
1

$(this)クリックされたボタンを参照するため、テーブルの行がDOMのボタンの子孫でない限り、$(this).find(".search-fade")それらは見つかりません。

$(this)テーブル行の親要素に変更する必要があります。

于 2013-02-15T17:04:43.887 に答える
1
$(".cancelmember").click(function () {
        remove_name = $(this).parent().parent().find(".removeemp-user");
        var thisEL = $(this).parent().parent();

        $.ajax({
        type: "POST",
        dataType: "json",
        url: '/pcg/removemem.php',
        data: {
            'username': remove_name.val()
        },
        success: function(){
            alert("Employee Removed"),
            thisEL.fadeOut();
        }
      });
    });

あなたは2レベル上に行く必要があります。
tr.search-fade <-これはフェードアウトする必要が
あります ---- td
--------- input.cancelmember <-クリックがここで発生しました

于 2013-02-15T17:15:09.580 に答える