2010-10-14 5 views
0

Salut J'ai un récipient div ayant une chaîne, certains div enfant ont un texte comme « Bienvenue », je veux faire ce conteneur div désactivé-à-dire non cliquable, si cet enfant de conteneurs div ont "Bienvenue" chaîne. Mon balisage est comme ceci.Comment désactiver un div

<div> 
<span>some text</span> 
<span>some text</span> 
    <div> 
     <span>some text</span> 
     <span>some text</span> 
    </div> 
    <div> 
     Welcome 
    </div> 
    <div> 
     Welcome 
    </div> 

</div> 
+0

Il n'y a pas de jquery ici - est-ce que votre question manque quelque chose? – teambob

+0

Que voulez-vous dire par désactivé ou non cliquable? Il n'y a rien dans un div par lui-même pour le rendre non-cliquable. – casablanca

+0

il y a n nombre de divs, donc un utilisateur a sélectionné un div que j'ajoute un texte sur ce div est "bienvenue". Maintenant, si ce div n'apparaît pas dans la liste, il ne sera pas sélectionné par l'utilisateur. – Soarabh

Répondre

2
$('div:contains("Welcome")') 
    .prop('disabled', true); 

Ou si vous voulez faire seulement divs qui ont exactement Welcome.

$('div:contains("Welcome")').filter(function() { 
    return $(this).html() == 'Welcome'; 
}).prop('disabled', true); 

Il appears cliquant sur un élément disabled="disabled" feux encore son événement click.

Vous pouvez donc off('click') à la place, et laisser le disabled si vous le souhaitez pour des raisons sémantiques (et comme un crochet CSS, c'est-à-dire div[disabled]).

+0

Je ne pense pas que vous pouvez désactiver un événement de clic comme ça. et aussi s'il y avait un autre élément par ex. "vous êtes les bienvenus" qui inclurait cet élément aussi. – Val

+0

@Val: Le deuxième exemple de code couvre cela. Il dit aussi que l'enfant a un texte ** comme ** "Bienvenue". C'est ambigu, alors j'ai fourni deux solutions. – alex

0

je suis pas sûr d'avoir compris votre question, j'espère que c'est ce que vous êtes à la recherche de:

$("a").click(function(event){ 
    event.preventDefault(); 
    $(this).hide("slow"); 
}); 

S'il vous plaît commentaire si ce ne

4

Si vous souhaitez désactiver une div, donnez-lui la classe nom « désactivé », par exemple:

<div class="disabled">Whatever</div> 

Ensuite, vous pouvez brancher dans les événements de clic de tous les divs handicapées pour l'empêcher de manipulation.

$('div.disabled').live('click', function(e) { 
    e.stopPropagation(); // you might not want this depending on your intentions 
    e.preventDefault(); 
    return false; 
}); 
0

Je suppose que vous utilisez ce message d'accueil une fois l'utilisateur est connecté ... si l'utilisateur est loggedIn vous avez un lien là ... si est connecté, l'utilisateur serait tout simplement lire les bienvenus ..

vous devez le faire sur le script côté serveur au lieu du côté client.

de toute façon si vous avez toujours besoin d'une solution côté client.

$('div').each(function(){ 
    if($this.text().trim()=='Welcome'){ 
    $(this).click(function(){return false;}) 
    } 
}); 

Ce serait une bonne idée si vous utilisez un nom class car cela est beaucoup mieux que de vérifier tous les divs ... la garniture supprimera tous les espaces blancs avant et après. alors j'espère que cela aidera.

0

Ce n'est pas aussi simple que d'attribuer l'attribut "disabled = disabled" à l'élément DIV. Cela grise, mais tous les éléments de la DIV sont toujours accessibles et cliquables. Pour désactiver vraiment le contenu de la DIV, vous devez sélectionner tous les descendants dans la DIV ...

$("div#your-id *").find(function(index) { 
// the jQuery find function will find all descendants inside the DIV 
}); 

et ensuite désactiver chaque élément trouvé. Mais même cela n'est pas aussi simple que d'attribuer l'attribut "disabled = disabled" car certains éléments ne répondent pas aux attributs "disabled", tels que les liens. Les éléments avec des événements de clic assignés ne seront pas désactivés en assignant "désactivé = désactivé". Vous devez supprimer tous les événements sur tous les éléments de la DIV.

J'ai créé un plugin jQuery qui peut complètement désactiver le contenu dans un DIV. Avec mon plugin, vous devez simplement faire ceci ..

$("div#your-id").disabler({ 
    disable : true 
}); 

et tous les éléments de la DIV seront vraiment désactivés. Utilisez-le ou déchirez le code et obtenez des idées. (http://www.dougestep.com/dme/jquery-disabler-widget).

Questions connexes