2010-05-07 8 views
2

je voudrais accomplir ce qui suit avec jquery:Afficher les éléments en fonction de la valeur html d'une balise

Lorsque je clique sur ce lien

<a href="#">Cars</a> 

Je voudrais que tous les divs comme ceux

<div class="product"> 
    <div class="category">Cars</div> 
</div> 

pour faire quelque chose.

Vous avez l'idée, j'ai un menu avec une liste de catégories, et une liste de produits, chacun contenant une div avec le nom de la catégorie, et je voudrais les faire cacher/montrer.

Répondre

8

Je ne sais pas si je comprends bien votre question, mais si vous voulez que la div class = « catégorie » voitures à apparaître lorsque le lien de voitures est cliqué, suivez ceci:

$("#menu a").click(function() { 
    var value = $(this).html(); 

    $.each($(".category"), function(i, item) { 
    if ($(item).html() == value) { 
     $(item).parent().hide(); 
    } 

    }); 
}); 

si vous voulez cacher le div juste remplacer $(item).show(); avec $(item).hide();

+0

Oui, grâce qui est l'idée, sauf que je voulais cacher le parent div (le "produit") n'est pas le "catégorie". J'ai réussi à le faire en faisant $ (item) .parent(). Show(); au lieu de $ (item) .show(); ps. Je pense qu'il y a une faute de frappe dans votre code, ça devrait être if ($ (item) .html() == value) {au lieu de if ($ (item) .html == value) { – mike23

+0

oui, c'était une faute de frappe , merci, j'ai mis à jour ma réponse avec vos besoins finaux, bonne chose je t'ai aidé .. à bientôt! :) pouvez-vous marquer mes réponses comme acceptées? – GerManson

2

En supposant:

<a href="#" class="highlight">Cars</a> 

alors:

$("a.highlight").click(function() { 
    $("div.category").removeClass("category") 
    .filter(":contains(" + $(this).text() + ")").addClass("highlight"); 
    return false; 
}); 

Ce que cela fait est d'ajouter la classe category à tout category dvis contenant le texte du lien. Cela peut être modifié pour modifier le div parent product si vous voulez le faire de cette façon aussi.

Il fonctionne en supprimant d'abord la classe highlight de tous les divs category et en l'ajoutant ensuite à ceux qui en ont besoin.

1

DEMO:http://jsbin.com/ucewo3/11SOURCE:http://jsbin.com/ucewo3/11/edit

$('a').click(function(e) { 
     var search_term = $.trim($(this).text()); //trim text 
     $('.category').each(function() { 
     ($(this).text().search(new RegExp(search_term , 'i')) < 0)//upper & lower 
     ? $(this).parent().hide() : $(this).parent().show(); 
     }); 
    }); 

Ce garder le texte dans la balise <a> et effectuer une recherche dans le <div class="category"> si le match texte <a> avec .category texte, il montre la connexes .product contenu!

NOTE:

  1. le match de script à la fois Majuscules et Minuscules caractères

    exemple correspondance Cars ainsi que cars et CARS

  2. correspondent également espacées texte comme <a> cars </a> ainsi que <a>cars</a> et <a>cars </a>

  3. Correspondre aussi texte tagués comme <div class="category"><span>cars</span></div>

+0

Script intéressant! Merci d'avoir partagé – mike23

Questions connexes