La méthode $(el).css() n'est pas faite pour supprimer l'attribut « style », elle modifie/supprime seulement des règles CSS, le comportement est donc normal. Si tu dois vraiment enlever l'attribut « style », alors c'est en effet $(el).removeAttr('style') qu'il faut utiliser.
(Sinon comme je l'ai dis plus haut, c'est mieux de travailler avec des classes pour ajouter/supprimer des styles).
---
Utiliser directement document.querySelector('...') par rapport à $('...'), c'est que si tu n'as que des sélections d'éléments dans le DOM à faire, faire une requête pour charger une librairie de 90 ko (minifiée et non gzippée) est vraiment pas malin, même si c'est sur un CDN (oui je commence à faire gaffe à ça sur mes projets maintenant, ça me fait mal quand je vois un site qui fait 120 requêtes pour 20 Mo de datas la première fois que tu visites le site...).
D'ailleurs, il me semble avoir vu un jour dans les sources de jQuery que si document.querySelectorAll était défini, alors il était utilisé à la place de Sizzle (moteur de sélection de jQuery), mais pas sûr.
Si tu dois travailler avec des frames, essaye de faire des fonctions ou wrapper pour te faciliter la vie du genre:
- Code:
-
function getFrame(index) {
const frame = parent.window.frames[index];
if(frame) {
return frame.document;
}
throw new Error("Not frame found at index #{index}")
}
HTMLDocument.prototype.getElement = function(selector) {
return this.querySelector(selector);
}
try {
getFrame(0).getElement('#my_id').style.marginLeft = 0;
// D'ailleurs, 0 et "0px" sont équivalents, mais préfère 0.
} catch(e) {
console.error(e);
}
(J'ai pas testé, mais ça devrait le faire je pense xd)