• 0

2nd menu option with jQuery


Question

http://www.romabio.com/products/preview.html <--- My Example /

http://www.redbox.com/movies <--- What I'm trying to do /

https://www.neowin.net/forum/topic/1131050-jquery-quicksand/ <--- First post about this /

If you remember, I was trying to get quicksand working and someone help me with doing a short jQuery code to do the same thing. Well, everything is working great with just doing one menu but now. I would like to add on to it so that their is a second option for the user to select. I provided the link to My Example. I don't know how to right the code in jQuery so that the user can also sort the list in to Interior or Exterior like they did in the Redbox movie list. I don't think it would be really hard for someone that knows jQuery to quickly right the code for me. I'm more of a front-end web designer and then a back-end one.

I put the code below but not all of the product DIV code because it's mostly the same thing just the li class and h1 is different.


<div id="dropdown">
<ul class="filter">
<li>Product Information List
<ul>
<li class="current"><a href="#">All Products</a></li>
<li><a href="#">Limewash Products</a></li>
<li><a href="#">Slaked Lime Plasters</a></li>
<li><a href="#">3.5 NHL Cements</a></li>
<li><a href="#">Potassium Silcate Paints</a></li>
<li><a href="#">Silossanic Paints</a></li>
<li><a href="#">Stain & Varnishes</a></li>
<li><a href="#">Specialty Products</a></li>
</ul>
</li>
</ul>
</div>
<div id="dropdown2">
<ul class="filter">
<li class="current"><a href="#">All</a></li>
<li id="drop2"><a href="#">Interior</a></li>
<li id="drop3"><a href="#">Exterior</a></li>
</ul>

</div>
</div>




<ul class="items">

<li class="Limewash Products">
<a href="#"><div class="science-list shadow horizontal">
<img src="https://placehold.it/300x159" alt="" longdesc="" />
<h1>BioCalce Classico</h1>
</div></a>
</li>

<li class="Limewash Products">
<a href="#"><div class="science-list shadow horizontal">
<img src="https://placehold.it/300x159" alt="" longdesc="" />
<h1>BioCalce Classico A</h1>
</div></a>
</li>

</ul>
[/CODE]

[CODE]
<script type="text/javascript">
$('.filter li a').click(function() {

$(this).css('outline','none');
$('.filter .current').removeClass('current');
$(this).parent().addClass('current');

var filter = $(this).text();
if(filter == 'All Products') {
$('.items li.hidden').fadeIn('normal').removeClass('hidden');
} else {
$('.items li').each(function() {
if(!$(this).hasClass(filter)) {
$(this).fadeOut('normal').addClass('hidden');
} else {
$(this).fadeIn('normal').removeClass('hidden');
}
});
}

return false;
});

</script>
[/CODE]

Link to comment
https://www.neowin.net/forum/topic/1132088-2nd-menu-option-with-jquery/
Share on other sites

7 answers to this question

Recommended Posts

  • 0

I can probably help you with this, but I'm not entirely sure what you are trying to accomplish...which part of the redbox menu are you trying to mimic? Is it the sorting functionality?

  • 0

Alright, I figured it out. It's kind of sloppy, but it gets the desired effect. You will still need to add in the Interior or Exterior class to each of your products, and change the class name for the second menu to "filter_2" for it to work. Other than that, you shouldn't have any issues. Here is the jQuery:


$('.filter li a').click(function() {

$(this).css('outline','none');
$('.filter .current').removeClass('current');
$(this).parent().addClass('current');

var filter = $(this).text();
var filter_2 = $('.filter_2 .current').text();
if(filter == 'All Products') {
if (filter_2=='All') {
$('.items li.hidden, .items h2.hidden').fadeIn('10000').removeClass('hidden');
}
else {
$('.items li, .items h2').each(function() {
if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
});
}
}
else {
$('.items li, .items h2').each(function() {
if (filter_2=='All') {
if (!$(this).hasClass(filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
}
else if(!$(this).hasClass(filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
});
}

return false;

});
$('.filter_2 li a').click(function() {
$('.filter_2 .current').removeClass('current');
$(this).parent().addClass('current');
var filter_2 = $(this).text();
var top_filter = $('.filter .current').text();
$('.items li, .items h2').each(function() {
if (top_filter=='All Products') {
if (filter_2=='All') {
$('.items li.hidden, .items h2.hidden').fadeIn('10000').removeClass('hidden');
}
else if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
}
else if (filter_2=='All') {
if (!$(this).hasClass(top_filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
}
else if (!$(this).hasClass(top_filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
});
});
[/CODE]

  • 0

Here is the final and working code in case anybody wanted to see the solution:


$('.filter li a').click(function() {

$(this).css('outline','none');
$('.filter .current').removeClass('current');
$(this).parent().addClass('current');
var filter = $(this).text();
var filter_2 = $('.filter_2 .current_2').text();
if(filter == 'All Products') {
if (filter_2=='All') {
$('.items li.hidden, .items h2.hidden').fadeIn('10000').removeClass('hidden');
}
else {
$('.items li, .items h2').each(function() {
if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
});
}
}
else {
$('.items li, .items h2').each(function() {
if (filter_2=='All') {
if (!$(this).hasClass(filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
}
else if(!$(this).hasClass(filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
});
}
return false;

});
$('.filter_2 li a').click(function() {
$('.filter_2 .current_2').removeClass('current_2');
$(this).parent().addClass('current_2');
var filter_2 = $(this).text();
var top_filter = $('.filter .current').text();
$('.items li, .items h2').each(function() {
if (top_filter=='All Products') {
if (filter_2=='All') {
$('.items li.hidden, .items h2.hidden').fadeIn('10000').removeClass('hidden');
}
else if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
}
else if (filter_2=='All') {
if (!$(this).hasClass(top_filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
}
else if (!$(this).hasClass(top_filter)) {
$(this).fadeOut('10000').addClass('hidden');
}
else if (!$(this).hasClass(filter_2)) {
$(this).fadeOut('10000').addClass('hidden');
}
else {
$(this).fadeIn('10000').removeClass('hidden');
}
});
});
[/CODE]

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • This is sadly what happens when a company tries to become political and focus on agendas outside gaming, the constant push of inclusivity and whatever the current thing was and box ticking, instead of simply focusing on what was a great game to many myself included, massive let down that a once great game company has ended up this way hopefully this will be a lesson to game devs from here on in to leave politics and agendas out of gaming
    • Prices for consumer electronic stink and will continue to stink for quite some time. If you're at all hesitant, just buy now because it's not getting better. (or buy used and save even more cash)
    • Microsoft raises Xbox console prices by up to $150, discontinues 2TB version by Pulasthi Ariyasinghe Back in March, Sony increased PlayStation 5 prices, and now, it's Microsoft's turn. Today, the company announced a major price increase that will affect all of its Xbox consoles, and one storage option is being discontinued entirely. There is some time before the new prices go into effect. Starting on August 1, 2026, any Xbox Series X|S model with 512GB of storage will cost $100 more than now. The price of 1TB models will go up by $150 instead. At the same time, all 2TB models are being discontinued. "The entire consumer electronics industry is struggling with the current components crisis, but the effects are particularly hard on consoles," said the company. "Unlike phones, computers, speakers, and other consumer devices, consoles are typically not sold at a profit, but instead for less than they cost to make." As the hikes hit, Microsoft is beginning to offer more options to make its consoles more accessible to potential customers, including financing, buy now, pay later schemes, and refurbished options: Buy Now, Pay Later: We’ve made it easier for players to use Buy Now, Pay Later options on eligible XBOX hardware purchases through Microsoft Stores, making it possible to break up your payment into predictable short-term, interest-free installments. Interest-Free Financing: Players purchasing eligible XBOX hardware through Amazon can take advantage of 0% APR financing for up to 12 months, giving players more flexibility with lower monthly payments and more budgeting control. Previously Played Consoles: We are working with retail partners on new programs to provide previously played consoles at lower prices. Players who are ready to upgrade or no longer use their console will be able to trade it in with participating retail partners for cash or store credit. Those consoles will then be made available at lower prices for players. Certified Refurbished Consoles: XBOX Certified Refurbished Consoles are available at Microsoft Stores for up to US$100 off MSRP. Microsoft said that the rising cost of storage and memory prices is behind this decision, with costs going up by over 2.5 times since the last time it raised prices of its consoles. The company says these parts are expected to double in price by the fall of 2027.
  • Recent Achievements

    • First Post
      kinowa earned a badge
      First Post
    • Rookie
      krychek57 went up a rank
      Rookie
    • Grand Master
      Jaybonaut went up a rank
      Grand Master
    • One Year In
      Philsl earned a badge
      One Year In
    • Dedicated
      Scoobystu earned a badge
      Dedicated
  • Popular Contributors

    1. 1
      +primortal
      409
    2. 2
      +Edouard
      168
    3. 3
      PsYcHoKiLLa
      132
    4. 4
      Xenon
      73
    5. 5
      Michael Scrip
      73
  • Tell a friend

    Love Neowin? Tell a friend!