Jump to content


Photo

[Resolvido] Remover Atributo "Title" De Links Via Javascript


  • Faça o login para participar
23 replies to this topic

#1 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 09/06/2010, 07:27

Olá pessoal,

Estou usando um CMS que insere automaticamente o atributo title nos links da página, como no exemplo abaixo:

<div class="box_menu">
<ul>
<li><a title="início" href="#">início</a></li>
<li><a title="sobre" href="#">sobre</a></li>
</ul>
</div>

<div id="rodape">
<ul>
<li><a title="início" href="#">início</a></li>
<li><a title="sobre" href="#">sobre</a></li>
</ul>
</div>

O problema é que isso, em alguns elementos do layout, acaba me desagradando.
Então precisava de um script que removesse o atributo title dos links que eu indicar. No caso, eu não posso inserir uma class ou id direto na tag <a>. No caso o script teria de encontrar o alvo por outro caminho, como por exemplo os caminhos de CSS:

.box_menu ul li a

#rodape ul li a

Espero ter explicado de maneira que dê pra entender. Seria isso possível por meio de JS?
Fico aguardando

Edição feita por: Cajado, 09/06/2010, 07:28.


#2 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 09/06/2010, 11:22

Com JQuery você faria isso em um segundo!

Conhece?
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#3 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 09/06/2010, 11:33

Não queria fazer uso de um biblioteca somente para isso... mas fuçando mais um pouco achei algo interessante nesse Link.

<html>
 <head>
  <title>removeAttribute</title>
  <script type='text/javascript'>
   window.onload = fucntion() {
    para = document.getElementById("para");
    para.removeAttribute("class");
   }
  </script>
 </head>
 <body>
  <p id="para" class="data">Parágrafo</p>
 </body>
</html>

Nesse exemplo ele removeu o atributo "class" da tag <p>.
O problema é que ele ensina a remover atributos por id. Aí não serve, pois cai na questão que falei no primeiro post...

Teria como editar esse código para resolver meu problema?

#4 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 09/06/2010, 12:31


  <script type='text/javascript'>

   window.onload = fucntion() {

       para = document.getElementsByTagName("a");

       if(para.length)

           for(para in index){

               para[index].removeAttribute("title");

           }

   }

  </script>



#5 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 09/06/2010, 12:55

  <script type='text/javascript'>
   window.onload = fucntion() {
       para = document.getElementsByTagName("a");
       if(para.length)
           for(para in index){
               para[index].removeAttribute("title");
           }
   }
  </script>


Percebi um erro que coloquei na expressão "window.onload = fucntion() {", onde "fucntion" está escrito errado, o certo é "function".

<script type='text/javascript'>
   window.onload = function() {
       para = document.getElementsByTagName("a");
       if(para.length)
           for(para in index){
               para[index].removeAttribute("title");
           }
   }
  </script>

Mas mesmo assim, não funcionou...

Dando uma olhada, parece que o script (se funcionasse) tiraria o title de todas as tags <a> da página. Quando na verdade, preciso que ele retire os titles de tags <a> filhas de tags <li>, filhas de tags <ul>... onde as <ul> eu posso definir uma class para identificar o alvo o script...

#6 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 09/06/2010, 14:46

corrigindo

       para = document.getElementsByTagName("a");
       if(para.length)
           for(index in para){
               para[index].removeAttribute('title');
           }


Fazia tanto tempo que eu não fazia "for in" que errei a sintaxe

Sobre escolher o alvo, bem, ai eu teria que fazer uma engine pra alvos, isso vc consegue com o jQuery ou o Sizzle.

ou vc pode fazer mais na mão

tipo

altere o, para o que vc quer nesse momento seria assim.

para = document.getElementById('seuID').getElementsByTagName('a');

no code inteiro

       para = document.getElementById('seuID').getElementsByTagName('a');
       if(para.length)
           for(index in para){
               para[index].removeAttribute('title');
           }



#7 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 09/06/2010, 15:12

Perfeito Édipo... mas e se eu utilizasse class ao invés de id? Pq assim eu não precissaria definir cada id na unha...

#8 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 23/06/2010, 14:34

<script type='text/javascript'>
   window.onload = function() {
         para = document.getElementById('my_id').getElementsByTagName('a');
       if(para.length)
           for(index in para){
               para[index].removeAttribute('title');
           }
   }
  </script>

Alguem pode colocar esse script para funcionar com classe, ao invés de id?

Faz um tempão que estou tentando converter isso, mas só fracasso...

Edição feita por: Cajado, 23/06/2010, 14:35.


#9 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 23/06/2010, 15:04

Com JQuery você faz isso em um segundo...

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">

   $(document).ready(function(){
       $("a.classe").removeAttr("title");
   });   

</script>

Vê se funciona... (y)
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#10 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 23/06/2010, 19:48

Com JQuery você faz isso em um segundo...

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">

   $(document).ready(function(){
       $("a.classe").removeAttr("title");
   });   

</script>

Vê se funciona... (y)



Não funcionou... Vejam o html...

<html>
<head><title>Title of hell</title>
<script type='text/javascript'>
   window.onload = function() {
         para = document.getElementById('meu_id').getElementsByTagName('a');
       if(para.length)
           for(index in para){
               para[index].removeAttribute('title');
           }
   }
  </script>

</head>
<body>
	<div id="meu_id">
		<ul>
			<li><a title="Title of hell" href="#">Title of hell</a>
		</ul>
      	</div>
</body>
</html>

Graças ao Édipo, o script funciona removendo o atributo title dos links dentro do elemento de id="meu_id". Mas preciso que isso funcionasse com class.

Pensava que isso era algo fácil para qualquer usuário experiente... Poxa... passar de getElementById para qualquer coisa que funcione com class... Olhando no Google, vi que tem como fazer essa conversão... mas como sou leigo em JS, não consegui adaptar ao meu script JS...

Não queria usar uma biblioteca somente para isso...

#11 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 23/06/2010, 20:46

Usuários experientes usam frameworks javascript, como Prototype, Sizzle e jQuery, que facilitam demais a tarefa de vc selecionar os elementos HTML da pagina. Indico que você use um deles, e adote como padrão para seus outros projetos. Tem muita coisa feita em jQuery hoje em dia.

#12 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 24/06/2010, 08:31

OK OK... vcs venceram...

Alguem poderia, por favor, pelo amor de DEUSS, resolver o meu problema... seja usando JQuery, ou outro framework qualquer...???

#13 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 24/06/2010, 11:26

importe a biblioteca jQuery.
[codebox]
<script type="text/javascript" src="http://code.jquery.c...n.js"></script>
<script type="text/javascript">
$('.minhaClasse a').removeAttr('title'); //código para tirar os titles
</script>
[/codebox]

Um exemplo de código HTML
[codebox]
<div class="minhaClasse">
<a href="http://forum.wmonline.com.br/" title="não, vou ser retirado">oh e agora quem podera me defender</a>
</div>
[/codebox]

#14 Cajado

Cajado

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 24/06/2010, 11:47

Não funcionou... Veja como fiz:
<html>
<head>
<title>Teste novamente</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
   <script type="text/javascript">
       $('.minhaClasse a').removeAttr('title'); //código para tirar os titles
   </script>
</head>
<body>
<div class="minhaClasse">
 <a href="http://forum.wmonline.com.br/" title="não, vou ser retirado">oh e agora quem podera me defender</a>
</div>
</body>
</html>

Edição feita por: Cajado, 24/06/2010, 11:54.


#15 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 24/06/2010, 13:25

hehe, esqueci colocar o esquema no ready...
segue:

[codebox]
<html>
<head>
<title>Teste novamente</title>
</head>
<body>
<div class="minhaClasse">
<a href="http://forum.wmonline.com.br/" title="não, vou ser retirado">oh e agora quem podera me defender</a>
</div>
<script type="text/javascript" src="http://code.jquery.c...n.js"></script>
<script type="text/javascript">
$(document).ready(function(){ /* roda tudo que esta dentro dele quando o html for carregado, similar ao window.onload mas só espera o html ser carregado e nada mais */
$('.minhaClasse a').removeAttr('title'); //código para tirar os titles
});
</script>
</body>
</html>
[/codebox]




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq