1

HTMLコードで以下のIDを持つこのページ要素を非表示にするのに問題があります

<table cellspacing=5 cellpadding=3>
  <tr>
    <td id="lst2"><h4>Apple Ipad for sale N70,000 (negotiable)</h4></td>
    <td><a href="unibay.php" class="button edit">EDIT</a></td>
    <td><a href="#" onclick="del('lst1');" class="button cross">DELETE</a></td>
  </tr>
  <tr id="lst2">
    <td><h4>Apple Ipad for sale N70,000 (negotiable)</h4></td>
    <td><a href="unibay.php" class="button edit">EDIT</a></td>
    <td><a href="#" value="list2" onclick="del('lst1');" class="button">DELETE</a></td>
  </tr>
</table>

javascript 関数で呼び出された jQuery を使用して、選択した ID を持つ要素を非表示にできるようにしたいと考えています。以下はコードですが、機能していません:

function del(obj) {
    $(document).ready(function(){
        var tdiv = document.getElementById(obj) ;
        var sdiv = "#" + tdiv ;
        $('.button').click(function () {
            $(sdiv).fadeOut('slow');
        });
    });
}
4

3 に答える 3

3

objターゲットの文字列が含まれているため、このようにする必要があると思いますid。次のアプローチで十分です。

var sdiv = "#" + obj;
$('.button').click(function () {
   $(sdiv).fadeOut('slow');
});

コードの問題

  • var tdiv = document.getElementById(obj);行は DOM 要素を返します。したがって、コードでこれを使用する必要がある場合は、次のようになります。

    function del() {
       var tdiv = document.getElementById(obj);
       $('.button').click(function() {
         $(tdiv).fadeOut('slow');
       });
    }
    

ここで$(tdiv)は、tdiv要素を jQuery オブジェクトにします。しかし、tdiv.fadeOut('slow')うまくいきません。

  • $(document).ready()関数内には必要ありませんdel()。したがって、コードは次のようになります。

    function del(obj) {
        var sdiv = "#" + obj;
        $('.button').click(function () {
          $(sdiv).fadeOut('slow');
        });
     }
    
于 2012-06-16T07:18:42.603 に答える
0
$(function() {

    $('.button').click(function () {
        $(this).parent().parent().fadeOut('slow');
    });

});

あなたのコードに問題があります:

  • document.ready関数内にあってはなりません。関数をdocument.ready
  • クリック イベントを関数内にバインドしました。クリック イベント内で使用thisして、クリックされた要素を取得してから、それが属する要素を.parent()2 回取得できるため、これは必要ありません。trtdtdtr
于 2012-06-16T07:23:19.230 に答える
0

この行で:

        var tdiv = document.getElementById(obj);

getElementById() は DOM 要素を返し、それを「tdiv」に割り当てます。したがって、それを「#」文字列に連結すると、実際には文字列 + DOM オブジェクトが追加されます (これは機能しません)。

簡単な修正があります。要素の ID が変数 'obj' に既に格納されているため、それを連結できます。

        var sdiv = "#" + obj;
        $('.button').click(function () {
            $(sdiv).fadeOut('slow');
        });

他の投稿者の中には、 document.ready() を del 関数の中に入れるべきではなく、その外側に置くべきだと指摘している人もいます。私は完全に同意しません。彼らの提案に従うと、「del」関数がグローバル名前空間で使用できなくなるため、コードが壊れます。

于 2012-06-16T07:54:33.800 に答える