I'm trying out Alpine JS and coming from jQuery. How can I do this in Alpine jS?
$('a').on('click', function(e) {
$('div').not('.' + $(this).data('class')).hide('slow');
$('.' + $(this).data('class')).slideToggle();
});
a {
display: block;
}
div {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#" data-class="a">Show all A's</a>
<div class="a">A</div>
<div class="a">A</div>
<div class="a">A</div>
<a href="#" data-class="b">Show all B's</a>
<div class="b">B</div>
<div class="b">B</div>
// EDIT this is pretty close. Any suggestions for improvements? Thanks!
a {
display: block;
}
<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.8.1/dist/alpine.min.js" defer></script>
<section x-data="{ letter: '' }">
<a href="#" @click.prevent="letter = (letter === 'a' ? '' : 'a')">Show all A's</a>
<div x-show.transition.in="letter === 'a'">A</div>
<div x-show.transition.in="letter === 'a'">A</div>
<div x-show.transition.in="letter === 'a'">A</div>
<a href="#" @click.prevent="letter = (letter === 'b' ? '' : 'b')">Show all B's</a>
<div x-show.transition.in="letter === 'b'">B</div>
<div x-show.transition.in="letter === 'b'">B</div>
</section>