EDYCJA: Ostatecznie, jeśli po prostu robisz proste zmiany stylu, powinieneś użyć CSS, aby to osiągnąć. Nie javascript.
Ten CSS nie będzie działał dla IE6, ale będzie to dotyczyło prawie wszystkich innych nowoczesnych przeglądarek.
Daj rodzic block_
elementy klasę jak block
, usunąć style inline od tools
, to zrobić:
$(function() {
$("div[id^=block_]").hover(function (e) {
$(this).children('.tools').toggle(e.type === 'mouseenter');
});
});
Chociaż myślę:
.block .tools {
display: none;
}
.block:hover .tools {
display: block;
}
Można to zrobić Dodałbym wspólną klasę do elementów block_
i wybrałam według tej klasy:
$(function() {
$("div.block").hover(function (e) {
$(this).children('.tools').toggle(e.type === 'mouseenter');
});
});
HTML
<div class="block" id="block_1">
<div class="tools" style="display:none;">Tools Here</div>
</div>
<div class="block" id="block_2">
<div class="tools" style="display:none;">Tools Here</div>
</div>
Wewnątrz obsługi zdarzeń, słowo this
odnosi się do elementu, który otrzymał wydarzenie. W tym przypadku element z identyfikatorem block_n
.
Następnie należy użyć elementu the .children()
method, aby wybrać element (y) potomny z klasą tools
.
The .toggle()
method może być używany do pokazywania/ukrywania elementów. Podałem mu argument, który jest wynikiem testowania rodzaju zdarzenia, które miało miejsce. Jeśli wydarzenie miało numer 'mouseenter'
, zostanie wyświetlony komunikat .tools
, w przeciwnym razie zostanie ukryty.
Zewnętrzny $(function() {...});
to skrót do zawijania kodu w jQuery's .ready()
method, który zapewnia, że twój kod nie będzie działał, dopóki DOM nie będzie gotowy.
Możesz dać the .hover()
method dwie funkcje, jeśli wolisz. Następnie użyłbym metod .show()
i .hide()
zamiast .toggle()
.
$(function() {
$("div[id^=block_]").hover(function() {
$(this).children('.tools').show();
}, function() {
$(this).children('.tools').hide();
});
});
Ten działał, dziękuję bardzo. – Frank