jQuery - Stergere stiluri css adaugate anterior
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
General
- Mesaje: 26
jQuery - Stergere stiluri css adaugate anterior
In codul asta este o problema, cind fac click pe elementul dat $('#products > li > a') se adauga stilurile css de mai sus, dar cind deja fac click pe alt element tot asa $('#products > li > a') stilurile de la elementul curent nu se sterg ci ramin asa si corespunzator daca fac click pe 5 elemente ele toate iau stilurile date, pe cind ar trebuie numai ala pe care fac click. Mai pe scurt trebuie sa fac vreun fel de .remove() ceva inainte de fiecare click dar nu se primeste.
Cod: Selectaţi tot
$('#products > li > a').on('click', function(e) {
var img = $(this).find('img.arrow');
if ($('#products > li > ul').hasClass("active")) {
img.attr("src", img.attr("src").replace("arrow-down.png", "arrow-up.png"));
$(this).css( {
"background-color": "#04BEF2",
"color": "white",
"text-decoration": "initial"
});
} else {
img.attr("src", img.attr("src").replace("arrow-up.png", "arrow-down.png"));
$(this).css("background-color","transparent");
}
});
MarPlo
Mesaje: 4343
Pai da, inainte de a aplica stilurile trebuie un cod ca sa le stearga pe cele adaugate anterior.
Incearca asa, retii intr-o variabila elementul la care se adauga, si inainte de a adauga, anulezi acele stiluri de la obiectul retinut.
Cod: Selectaţi tot
var prev_elm =0;
$('#products > li > a').on('click', function(e){
//removes styles from previous element
if($('#products > li > ul').hasClass("active")){
if(prev_elm !=0) prev_elm.css({ "background-color":'', "color":'', "text-decoration":''});
prev_elm = $(this); //keep current element
var img = $(this).find('img.arrow');
img.attr("src", img.attr("src").replace("arrow-down.png", "arrow-up.png"));
$(this).css({
"background-color": "#04BEF2",
"color": "white",
"text-decoration": "initial"
});
} else {
img.attr("src", img.attr("src").replace("arrow-up.png", "arrow-down.png"));
$(this).css("background-color","transparent");
}
});
General
Mesaje: 26
Da acum css se schimba, dar imaginea nu, pentru ca in cazul daca se facea conditia if se modifica si imaginea, dar acum nu se modifica, principiul e tot ca si la css, cind apas click pe element arata o imagine, iar cind apas click pe alt element imaginea din elementul precedent trebuie sa fie default cum era
MarPlo
Mesaje: 4343
Daca imaginea e in elementul retinut, o gasesti cu find() si aplici inversarea la "src".
Vezi cum e acest cod:
Cod: Selectaţi tot
var prev_elm =0;
$('#products > li > a').on('click', function(e){
//removes styles from previous element and restore img
if($('#products > li > ul').hasClass("active")){
if(prev_elm !=0){
prev_elm.css({ "background-color":'', "color":'', "text-decoration":''});
prev_elm.find('img.arrow').attr("src").replace("arrow-up.png", "arrow-down.png"));
}
prev_elm = $(this); //keep current element
var img = $(this).find('img.arrow');
img.attr("src", img.attr("src").replace("arrow-down.png", "arrow-up.png"));
$(this).css({
"background-color": "#04BEF2",
"color": "white",
"text-decoration": "initial"
});
} else {
img.attr("src", img.attr("src").replace("arrow-up.png", "arrow-down.png"));
$(this).css("background-color","transparent");
}
});
General
Mesaje: 26
straniu, imaginea se modifica cind faci click pe element, dar cind faci click pe alt element dupa precedentul click imaginea ramine tot asa, dar ar trebuie sa se modifice
MarPlo
Mesaje: 4343
Pune codul pe un site precum jsfiddle.net/ (si linkk-ul aici) ca sa se poata vedea si testa direct de cei care vor sa ajute pe acest forum.
General
Mesaje: 26
Nu se primeste sa pun cod-ul pe jsfiddle.net pentru ca e ceva gen template.
Insa rezultat se poate vedea aici:
mattkersley.com/responsive/
introduci adresa URL: visionmagazin.ru si primesti asta:
prntscr.com/991dgc
MarPlo
Mesaje: 4343
Incearca si acest cod, retine si imaginea separat. Daca nu merge, nu stiu care-i problema.
Cod: Selectaţi tot
var prev_elm =0;
var prev_img =0;
$('#products > li > a').on('click', function(e){
if($('#products > li > ul').hasClass("active")){
var img = $(this).find('img.arrow');
//removes styles from previous element and change img back
if(prev_elm !=0) prev_elm.css({ "background-color":'', "color":'', "text-decoration":''});
if(prev_img !=0) prev_img.attr("src").replace("arrow-up.png", "arrow-down.png"));
prev_elm = $(this); //keep current element
prev_img = img; //keep current img
img.attr("src", img.attr("src").replace("arrow-down.png", "arrow-up.png"));
$(this).css({
"background-color": "#04BEF2",
"color": "white",
"text-decoration": "initial"
});
} else {
img.attr("src", img.attr("src").replace("arrow-up.png", "arrow-down.png"));
$(this).css("background-color","transparent");
}
});
Subiecte similare
-
Inversare caractere adăugate într-un câmp de text
JavaScript - jQuery - Ajax
Primul mesaj
Am urmatorul cod html si JavaScript. O caseta de text input si un button.
<input type='text' id='backwards-input'>
<button...
Ultimul mesaj
Testeaza si studiaza urmatorul cod:
<input type='text' id='backwards-input'>
<button id='backwards-button'>Button</button>...
-
Formular dinamic cu jQuery
JavaScript - jQuery - Ajax
Primul mesaj
Salut
As dori sa fac un formular in care vreu sa pun pretul de transport in functie de greutate.
Si am greutatea minima , greutatea maxima ; cost...
Ultimul mesaj
La refresh nu raman fiindca nu sunt salvate undeva pentru a fi preluate.
Ca sa ramana si la refresh e necesar sa le salvezi intr-o baza de date,...
-
Ordine de executie cu jQuery-AJAX
JavaScript - jQuery - Ajax
Primul mesaj
Am acest cod (ajax este asincron):
function echoHello(){
return $.ajax({
//this will return hello ;
});
}
function echoWorld(){
return world...
Ultimul mesaj
Ajax face un apel către serverul web și este asincron. Nu știi cât va dura pana la raspuns. Este la fel ca:
setTimeout(_ => {...
-
Cerere: Corectare Script upload cu jquery
Cereri si Oferte
Primul mesaj
Am facut un script de upload cu jquery si cu butoane de rotire si progress bar dar pana sa introduc progress barul imi incarca poza in folder,dupa ce...
Ultimul mesaj
Scriptul jquery pe care-l ai pentru rotation nu se potriveste cu upload de mai multe fisiere.
Ca sa functioneze cu multiple upload trebuie...