Data-dismiss, öğeyi tamamen kaldırır. Bunun yerine jQuery'nin .hide () yöntemini kullanın.
Hızlı düzeltme yöntemi:
Öğeyi gizlemek için satır içi javascript kullanma onclick şu şekilde:
<div class="alert" style="display: none">
<a class="close" onclick="$('.alert').hide()">×</a>
<strong>Warning!</strong> Best check yo self, you're not looking too good.
</div>
<a href="#" onclick="$('alert').show()">show</a>
http://jsfiddle.net/cQNFL/
Bununla birlikte, bu yalnızca tembelseniz kullanılmalıdır (bakımı yapılabilen bir uygulama istiyorsanız bu iyi bir şey değildir).
Doğru yapma yöntemi:
Bir öğeyi gizlemek için yeni bir veri özelliği oluşturun.
Javascript:
$(function(){
$("[data-hide]").on("click", function(){
$("." + $(this).attr("data-hide")).hide()
// -or-, see below
// $(this).closest("." + $(this).attr("data-hide")).hide()
})
})
ve sonra biçimlendirmede data-dismiss'i data-hide olarak değiştirin. Jsfiddle'daki örnek .
$("." + $(this).attr("data-hide")).hide()
Bu, data-hide'de belirtilen sınıfa sahip tüm öğeleri gizler, yani: data-hide="alert"
uyarı sınıfıyla birlikte tüm öğeleri gizler.
Xeon06 alternatif bir çözüm sağladı:
$(this).closest("." + $(this).attr("data-hide")).hide()
Bu yalnızca en yakın ana öğeyi gizleyecektir. Her uyarıya benzersiz bir sınıf vermek istemiyorsanız, bu çok kullanışlıdır. Ancak, uyarının içine kapat düğmesini yerleştirmeniz gerektiğini lütfen unutmayın.
Jquery doc'tan .closest kelimesinin tanımı :
Kümedeki her bir öğe için, öğenin kendisini test ederek ve DOM ağacındaki ataları boyunca yukarı doğru ilerleyerek seçiciyle eşleşen ilk öğeyi alın.
alert
, sayfada aynı sınıfa (yani ) sahip HER öğeyi gizleyecektir . Bunun için bir çözüm, geri aramanın içeriğini$(this).closest("." + $(this).attr("data-hide")).hide();
yalnızca en yakın ana öğeyi etkileyecek olan bu satırla değiştirmek olabilir , çünkü kapatma düğmesi tipik olarak etkilediği uyarının içine yerleştirilir.