Aide - Recherche - Membres - Calendrier
Version complète : Faire disparaitre des <div>&nbsp;</div> avec Jquery.
Forum Développeur - Administration serveur, programmation et base de données > Programmation > Javascript et AJAX
Discret
Bonjour,

Je suis Graphiste et j'utilise Jquery avec Moss (sharepoint) le CMS de
Microsoft, à priori les développeurs de cette Usine à gaz n'ont aucun
sens de l'esthétique du code et de l'optimisation.

J’ai supposé qu'avec un petit coup de baguette magique, j'allais faire
disparaitre des div quand ils sont vides, alors oui j'aurais pu
utiliser facilement le selecteur .empty() mais sharepoint génère des
&nbsp; (espace insécable) que je ne peux pas supprimer en amont.

Du coup cette petite fonction ne fait pas grand-chose :

<script type="text/javascript">

$(document).ready(function () {
$("#header div empty").hide();
});

</script>


<div id="header">
<div id="Auteur">&nbsp;</div>
<div id="Date">&nbsp;</div>
<div id="accroche-page"><div dir=""></div>&nbsp;</div>
</div>

Y aurait il un expert pour m'aider ? Ou pour m'aiguiller vers une solution.

cordialement

Discret
Discret
ok j'ai trouvé la solution, j'explique très rapidement pourquoi je ne fais pas disparaitre les &nbsp; côté serveur.
Tout simplement, je n'ai pas la main au delà de la page aspx qui se présente de cette manière :

<div class="header">
<div id="Auteur"><SharePointWebControls:TextField
FieldName="BDFActuAuthor" runat="server"></
SharePointWebControls:TextField></div>
<div id="Date"><SharePointWebControls:datetimefield
FieldName="ArticleStartDate" runat="server" id="datetimefield3"></
SharePointWebControls:datetimefield></div>
<div class="accroche-page"><SharePointWebControls:NoteField
FieldName="BDFActuAccroche" runat="server"></
SharePointWebControls:NoteField></div>
</div>

alors la solution avec Jquery est la suivante au détriment des performances de l'affichage de la page :

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>test jquery</title>

<script src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">

$(document).ready(function() {

$('#header div:empty').remove();

$('#header div').each(function(){

if ($(this).html()=='&nbsp;') $(this).remove();

})

});

</script>

</head>

<body>
<h1>Titre</h1>
<div id="header">
<div id="Auteur">&nbsp;</div>
<div id="Date">&nbsp;</div>
<div id="accroche-page"><div dir=""></div>&nbsp;</div>
</div>
<p>texte</p>

</body>
</html>
choy
Est-ce que celà change l'affichage de ta page ? parcequ'il serait dommage de charger un js, la librairie jquery... dans le seul but de nettoyer son code source que le visiteur ne regarde pas. Le visiteur lambda, les autres regarderont peut-être mais bon... vaut mieux dépenser son énergie ailleur je pense (essayer de placer une fonction de nettoyage avant l'envoi de la page au client me semble déjà plus utile bien qu'encore perfectible.
Discret
Tout a fait d'accord smile.gif

Et ça change l'affichage comme je le souhaitais.

Je ne peux pas modifier ce qui génère des &nbsp; ce sont des SharePointWebControls, ils sont compilés dans la dll sharepoint, ça voudrais dire changer le produit Microsoft qui est fourni en standard comme ça.
C'est pour un Intranet les utilisateurs ne regarderont pas le code;

À moins que ce ne soit pour son amélioration, d'être salarié Microsoft et d’aimer partager des documents Offices toute la journée, je ne souhaite à personne d'être chargé de customiser ce CMS. icon_lol.gif

Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.