Deze eigenschap of removeClass word niet ondersteund

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yoeri Achterbergen

Yoeri Achterbergen

28/11/2014 15:32:11
Quote Anchor link
Hallo,

Via de broncode heb ik gegekeken of jquery het juiste doet, alleen geeft hij het volgende aan:

"De eigenschap of methode removeClass wordt niet ondersteund door dit object"

het stukje code is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$('ul').click(function(){  
        if(mouse == true){
        $('ul').children('li').hasClass('open').removeClass('open')};
    });


wie weet er een oplossing?
 
PHP hulp

PHP hulp

11/07/2020 00:33:05
 
Wouter J

Wouter J

28/11/2014 15:56:32
Quote Anchor link
Kijk eens op api.jquery.com wat de return value van hasClass is...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

28/11/2014 17:25:38
Quote Anchor link
Weg met die hasClass() inderdaad. De gebruik je alleen als je wilt weten of een element een bepaalde class heeft.
 
Yoeri Achterbergen

Yoeri Achterbergen

29/11/2014 12:14:01
Quote Anchor link
Beste,

Wat raden jullie mij aan te doen i.p.v. hasClass()?
Ik wil jquery laten kijken of een bepaald element een bepaalde class heeft en vervolgens deze laten verwijderen.
 
- Pepijn  -

- Pepijn -

29/11/2014 12:19:06
Quote Anchor link
Kijk eens naar "is()".
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/11/2014 12:55:36
Quote Anchor link
Wij weten niet wat je wilt bereiken maar ik gok dat je misschien dit zoekt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$('ul').click(function() {  
    if(mouse == true) { // geen idee wat dit is?
        $("li").removeClass('open'); // alle listitems zijn nu zonder de class 'open'
    }
});
Gewijzigd op 29/11/2014 13:36:35 door Frank Nietbelangrijk
 
Yoeri Achterbergen

Yoeri Achterbergen

29/11/2014 16:41:14
Quote Anchor link
Beste,

Wat ik graag wil zal ik uitleggen:

Je hebt een element waarin zich 5 elementen in bevinden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="main">
<li>klik hier voor element 1
<div class="element1 hide"></div>
</li>
<li>klik hier voor element 2
<div class="element2 hide"></div>
</li>
<li>klik hier voor element 3
<div class="element3 hide"></div>
</li>
<li>klik hier voor element 4
<div class="element4 hide"></div>
</li>
<li>klik hier voor element 5
<div class="element5 hide"></div>
</li>
</div>


Alle div elementen krijgen de class hide {display:none;} mee.

Als ik op klik hier voor element 1 klik moet de hide class van element 1 verwijderd worden.
Klik ik nu nog eens op klik hier voor element 1 dan moet hij weer de class hide meekrijgen.

Dit is nog te maken met bijvoorbeeld toggleClass('hide').

Nu kom ik op het punt waar ik op vast loop:

Ik klik op"klik hier voor element 1" dan haalt hij de class hide eraf, als ik dan vervolgens op een ander element klik 2,3,4, of vijf dan moet hij ook de class hide weer krijgen. Kort gezegd er mag steeds maar een element zichtbaar zijn.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/11/2014 17:28:34
Quote Anchor link
in plaats van class="element?" moet je ze gewoon alle vijf class="element" maken. Wil je ze een eigen nummer geven gebruik dan het id attribuut (id="1").

Ik denk dat je zoiets wilt:
http://codepen.io/anon/pen/GgpgZx

Zoals ik deze week al eerder heb aangegeven in een ander topic:

-toggle is niet geschikt als je controlle wilt hebben over zichtbaar of onzichtbaar maken.
En omdat je in deze situatie alle div's onzichtbaar wilt maken behalve één moet je zeker weten dat je ze onzichtbaar maakt.

Ik doe het zelf altijd gewoon met jQuery's show() en hide() in plaats van met addClass() en removeClass().

http://codepen.io/anon/pen/wBKBzQ
Gewijzigd op 29/11/2014 17:32:14 door Frank Nietbelangrijk
 
Yoeri Achterbergen

Yoeri Achterbergen

29/11/2014 17:50:19
Quote Anchor link
Beste Frank,

Dit is inderdaad wat ik bedoel. Maar wat kan ik dan toevoegen, als ik 2 keer op de zelfde klik hij ook een hidden krijgt ?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/11/2014 19:11:21
Quote Anchor link
Dan moet er alleen een div zichtbaar worden als die nog onzichtbaar was. Daartoe moet je dan dus eerst de css display waarde opvragen.

Ik heb de laatste van de twee aangepast:

http://codepen.io/anon/pen/wBKBzQ
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/11/2014 20:11:18
Quote Anchor link
Frank kan je de code ook gewoon hier plaatsen? Dan kunnen anderen zien waarover het gaat zonder op een externe link te hoeven klikken.

Je gebruikt bijvoorbeeld:
Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$(li div).click(function(e){
    e.preventDefault();
})

Buiten dat li en div geen default gedrag hebben, ga je een eventListener hangen aan alle divs en li's in het gehele DOM.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/11/2014 21:06:13
Quote Anchor link
Hey Ger, ik was nog even wat aan het testen. die preventDefault is er alweer uit.

Op verzoek:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$( document ).ready(function() {
  $('li').click(function() {
    
    // even zien wat de display status is
    var oldStatus = $(this).children('div').css('display');
    
    // alle div's met class element verbergen
    $('.element').hide();
    
    // de div die child-div is van 'this' laten zien
    // maar alleen als de vorige status display:none; was
    if(oldStatus == 'none')
        $(this).children('div').show();
  });
});
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/11/2014 21:32:34
Quote Anchor link
Frank, blijft nog dezelfde opmerking staan, je selecteert nog steeds alle li elementen uit het gehele document.

Ook kan je binnen .children weer op dezelfde manier een selector gebruiken, het geeft meer controle over het hoe en wat.

Het kan natuurlijk zijn dat je het normaal gesproken anders doet, maar omdat meerdere personen dit lezen kunnen ze soort dingen als gebruikelijk ervaren.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/11/2014 23:04:32
Quote Anchor link
Ja klopt dat is wat Yoeri aangeeft. Terechte opmerking
 
Yoeri Achterbergen

Yoeri Achterbergen

04/12/2014 10:17:29
Quote Anchor link
Bedankt het werkt! bedankt voor het meedenken!

Gr. Yoeri
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.