JQuery'de bir div “fadeOut” ve “kaldırma” nasıl yapılır?


233

Bir div fadeout efekti vermeye çalışıyorum & bir görüntü tıklatıldığında bu div (id = "bildirim") silmek.

Bunu şu şekilde yapıyorum:

<a onclick="$("#notification").fadeOut(300,function() { $("#notification").remove(); });" class="notificationClose "><img src="close.png"/></a>

Bu işe yaramıyor gibi görünüyor. Bunu düzeltmek için ne yapmam gerekiyor?


14
Soru için 15 oy ve cevap için 55 oy ... ve açıkça sadece bir yazım hatasıydı ... wtf?
Ivan Castellanos

4
Şimdi 34 ve 110 :). Buraya indi, çünkü solukluktan SONRA bir öğeyi nasıl kaldıracağımı bilmiyordum (tahmin edebilirsiniz: RTFM yoktu).
04 Mart'ta

4
yazım hatası ne olursa olsun, soru google sonuçlarında görünür ve yanıtları hızlı bir şekilde bulduğumda oyları kaldırırım.
Valamas

Yanıtlar:


440

Bunu dene:

<a onclick='$("#notification").fadeOut(300, function() { $(this).remove(); });' class="notificationClose "><img src="close.png"/></a>

Bence çift tırnaklarınız onclickişe yaramadı. :)

DÜZENLEME : Aşağıda belirtildiği gibi, satır içi javascript kötüdür ve muhtemelen bunu çıkarmalı onclickve jQuery'nin click()olay işleyicisine taşımalısınız . Bugünlerde havalı çocuklar böyle yapıyor.


24
JavaScript'i yerinde kullanmamalısınız, çünkü tutarlı bir şekilde değiştirmeyi zorlaştırır.
Nick Berardi

14
Bunu göz ardı etmiyorum, sadece sorununa adama yardım ediyorum. Bazen vaaz veriyorum, yeni uyandım ve "ekstra mil" havasında değilim. Gönderiniz bu işi yapıyor. :)
Paolo Bergantino

Onclick işleyicisinin nasıl kötü olduğu hakkında ayrıntılı bilgi verebilir misiniz? Sadece sürdürülebilirlik mi yoksa teknik bir sebep var mı?
panzi

2
Bir sayfada her JavaScript satırı istediğinizde gerçekten ayrı bir dosyaya değer mi? Bence inline'ın yeri var.
Casey

91

jQuery'yi satır içi değil, ayrı bir dosyada kullanmaya çalışmalısınız. İhtiyacınız olan şey:

<a class="notificationClose "><img src="close.png"/></a>

Ve sonra bu, sayfanızın alt kısmında <script>en azından etiketlerde veya harici bir JavaScript dosyasında.

$(".notificationClose").click(function() {
    $("#notification").fadeOut("normal", function() {
        $(this).remove();
    });
});

Bunu denedim ama işe yaramadı. Yukarıdaki satır içi bağlantı işe yaradı ve ikisi neredeyse aynı. İşte ... jsfiddle.net/AndyMP/DBrf5
Andy

1
@Andy: öncelikle jQuery'ye kütüphane kurmayı unuttuğu Herşeyden; sitenizde kullandığınız takdirde) İkinci olarak, aynı zamanda onu sarmak için ihtiyaç $(document).ready(function() {ve });. (jsFiddle'da onload, bu yüzden bunu sizin için yapar)
Nathan

@Nick Berardi, sayfa aşağı kaydırma ile yapabilir miyiz?
Süper Model

55

Birkaç farklı yerde kullanıyorsanız, bir eklentiye dönüştürmelisiniz.

jQuery.fn.fadeOutAndRemove = function(speed){
    $(this).fadeOut(speed,function(){
        $(this).remove();
    })
}

Ve sonra:

// Somewhere in the program code.
$('div').fadeOutAndRemove('fast');

Sadece bunun nasıl yapıldığına bakıyordum ve amacım için, "eklenti" yolu benim için daha iyi, teşekkürler
Harag

30

Bunu denedin mi?

$("#notification").fadeOut(300, function(){ 
    $(this).remove();
});

Yani, bu bağlamı, id değil, iç işlevdeki öğeyi hedeflemek için kullanmak. Bu kalıbı her zaman kullanıyorum - çalışmalı.


5

benim gibi bir şey varsa bir google arama geliyor ve serin animasyon ile bir html öğesi kaldırmak istiyorsanız, o zaman bu size yardımcı olabilir:

$(document).ready(function() {
    
    var $deleteButton = $('.deleteItem');

    $deleteButton.on('click', function(event) {
    
        event.preventDefault();

        var $button = $(this);

        if(confirm('Are you sure about this ?')) {

            var $item = $button.closest('tr.item');

            $item.addClass('removed-item')

                .one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(e) {

                    $(this).remove();
            });
        }
      
    });
    
});
/**
 * Credit to Sara Soueidan
 * @link https://github.com/SaraSoueidan/creative-list-effects/blob/master/css/styles-3.css
 */

.removed-item {
    -webkit-animation: removed-item-animation .8s cubic-bezier(.65,-0.02,.72,.29);
    -o-animation: removed-item-animation .8s cubic-bezier(.65,-0.02,.72,.29);
    animation: removed-item-animation .8s cubic-bezier(.65,-0.02,.72,.29)
}

@keyframes removed-item-animation {
    0% {
        opacity: 1;
        -webkit-transform: translateX(0);
        -ms-transform: translateX(0);
        -o-transform: translateX(0);
        transform: translateX(0)
    }

    30% {
        opacity: 1;
        -webkit-transform: translateX(50px);
        -ms-transform: translateX(50px);
        -o-transform: translateX(50px);
        transform: translateX(50px)
    }

    80% {
        opacity: 1;
        -webkit-transform: translateX(-800px);
        -ms-transform: translateX(-800px);
        -o-transform: translateX(-800px);
        transform: translateX(-800px)
    }

    100% {
        opacity: 0;
        -webkit-transform: translateX(-800px);
        -ms-transform: translateX(-800px);
        -o-transform: translateX(-800px);
        transform: translateX(-800px)
    }
}

@-webkit-keyframes removed-item-animation {
    0% {
        opacity: 1;
        -webkit-transform: translateX(0);
        transform: translateX(0)
    }

    30% {
        opacity: 1;
        -webkit-transform: translateX(50px);
        transform: translateX(50px)
    }

    80% {
        opacity: 1;
        -webkit-transform: translateX(-800px);
        transform: translateX(-800px)
    }

    100% {
        opacity: 0;
        -webkit-transform: translateX(-800px);
        transform: translateX(-800px)
    }
}

@-o-keyframes removed-item-animation {
    0% {
        opacity: 1;
        -o-transform: translateX(0);
        transform: translateX(0)
    }

    30% {
        opacity: 1;
        -o-transform: translateX(50px);
        transform: translateX(50px)
    }

    80% {
        opacity: 1;
        -o-transform: translateX(-800px);
        transform: translateX(-800px)
    }

    100% {
        opacity: 0;
        -o-transform: translateX(-800px);
        transform: translateX(-800px)
    }
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  
  <table class="table table-striped table-bordered table-hover">
    <thead>
      <tr>
        <th>id</th>
        <th>firstname</th>
        <th>lastname</th>
        <th>@twitter</th>
        <th>action</th>
      </tr>
    </thead>
    <tbody>
      
      <tr class="item">
        <td>1</td>
        <td>Nour-Eddine</td>
        <td>ECH-CHEBABY</td>
        <th>@__chebaby</th>
        <td><button class="btn btn-danger deleteItem">Delete</button></td>
      </tr>
      
      <tr class="item">
        <td>2</td>
        <td>John</td>
        <td>Doe</td>
        <th>@johndoe</th>
        <td><button class="btn btn-danger deleteItem">Delete</button></td>
      </tr>
      
      <tr class="item">
        <td>3</td>
        <td>Jane</td>
        <td>Doe</td>
        <th>@janedoe</th>
        <td><button class="btn btn-danger deleteItem">Delete</button></td>
      </tr>
    </tbody>
  </table>
  
<script src="https://code.jquery.com/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" />


</body>
</html>



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.