[Resolvido]Função do jQuery não funciona

11 respostas
R

Olá pessoal, tudo bom?

Eu tenho o seguinte código:
<div style="margin-bottom: 10px;">
	<span style="float: left;">
		<select id="arquivo" class="componente" style="width: 100px;" >  
		    <c:forEach var="codigo" items="${arquivoList}">    
		        <option value="${codigo}">${codigo}</option>    
		    </c:forEach>    
		</select>
	</span>
	<span style="margin-left: 10px;">
		<button type="button" onclick="adicionar();">
			<fmt:message key="rotuloBtAdicionar" />
		</button>
	</span>
</div>
<div id="arquivosSelecionado" class="ui-corner-all" style="border: solid 1px #999; padding-left: 5px;
	padding-bottom: 5px; min-height: 10px;">
	<div class="displayInlineBlock">ola</div>
</div>

<script type="text/javascript">
	function adicionar() {
		$('#arquivosSelecionado').append('<div class="displayInlineBlock">' + 
			$('#arquivo').val() + '<span style="float: right; display: none; width: 10px;" class="ui-icon ui-icon-closethick"></span></div>');
	};
	$(document).ready( function() {
		$('.displayInlineBlock').mouseover(function(){alert();});
	});
</script>

Então, quando eu adiciono vários itens pelo botão de adicionar, o alert só funciona na div do 'ola'...
Mas o mais estranho é que a CSS (:hover) é aplicada em todos eles.

Alguém sabe o que pode ser?

11 Respostas

J
tente assim
$(function(){
   
    var adicionar = function() {  
            $('#arquivosSelecionado').append('<div class="displayInlineBlock">' +   
            $('#arquivo').val() + '<span style="float: right; display: none; width: 10px;" class="ui-icon ui-icon-closethick"></span></div>');  
    };  

    $('.displayInlineBlock').mouseover(function(){alert();});  

});
R

Mas ai eu conseguiria chamar o adicionar a qualque hora? como?

J

The .ready() method is typically used with an anonymous function:

$(document).ready(function() {
  // Handler for .ready() called.
});

Which is equivalent to calling:

$(function() { // Handler for .ready() called. });

R

Desculpe, não fui muito claro.

Eu preciso chamar a função adicionar:

&lt;button type="button" onclick="adicionar();"&gt; &lt;fmt:message key="rotuloBtAdicionar" /&gt; &lt;/button&gt;

Agora ela esta em uma variável, como faço para executá-la?

J
Rafael Guerreiro:
Desculpe, não fui muito claro. Eu preciso chamar a função adicionar:
&lt;button type="button" onclick="adicionar();"&gt;  
            &lt;fmt:message key="rotuloBtAdicionar" /&gt;  
        &lt;/button&gt;

Agora ela esta em uma variável, como faço para executá-la?

ok neste caso deixe como estava antes
funcao adicionar(){
}

mas os dois modos funcionam

outra coisa,
ja que voce esta usando jquery
porque nao fazer isso

remover o atributo onclick do botao, e o js fica assim

$(function(){

    var adicionar = function() {
    	$('#arquivosSelecionado').append('&lt;div class="displayInlineBlock"&gt;' +     
		$('#arquivo').val() + '&lt;span style="float: right; display: none; width: 10px;" class="ui-icon ui-icon-closethick"&gt;&lt;/span&gt;&lt;/div&gt;');    
    };    
  
	$('.displayInlineBlock').mouseover(function(){alert();});
	
	$("button").click(function(){
		adicionar();
	});
  
});
R

Meu código está assim agora:

&lt;script type="text/javascript"&gt; $(function(){ var adicionar = function () { $('#arquivosSelecionado').append('&lt;div class="displayInlineBlock"&gt;' + $('#arquivo').val() + '&lt;span style="float: right; display: none; width: 16px;" class="ui-icon ui-icon-closethick"&gt;&lt;/span&gt;&lt;/div&gt;'); }; $(document).ready( function() { $('.displayInlineBlock').mouseover(function(){ $(this).find('.ui-icon-closethick').show(); }); $('.displayInlineBlock').mouseout(function(){ $(this).find('.ui-icon-closethick').hide(); }); $('.adicionar').click(function(){ adicionar(); }); }); }); &lt;/script&gt;

Só que ele não faz o mouseover e o mouseout das divs que forem incluídas pelo método adicionar();
Se eu colocar um monte de divs dessa na mão, ele faz de todas elas, menos das que eu adicionar pelo método… É isso que me deixa super incucado.

J
Rafael Guerreiro:
Meu código está assim agora:
&lt;script type="text/javascript"&gt;
	$(function(){
		var adicionar = function () {
			$('#arquivosSelecionado').append('&lt;div class="displayInlineBlock"&gt;' + 
				$('#arquivo').val() + '&lt;span style="float: right; display: none; width: 16px;" class="ui-icon ui-icon-closethick"&gt;&lt;/span&gt;&lt;/div&gt;');
		};
		$(document).ready( function() {
			$('.displayInlineBlock').mouseover(function(){
				$(this).find('.ui-icon-closethick').show();
			});
			$('.displayInlineBlock').mouseout(function(){
				$(this).find('.ui-icon-closethick').hide();
			});
			$('.adicionar').click(function(){
				adicionar();
			});
		});
	});
&lt;/script&gt;

Só que ele não faz o mouseover e o mouseout das divs que forem incluídas pelo método adicionar();
Se eu colocar um monte de divs dessa na mão, ele faz de todas elas, menos das que eu adicionar pelo método... É isso que me deixa super incucado.

ok,
ta ai um exemplo

isso aqui
$(function(){
});

'e igual a isso aki

$(document).ready....

quando da o append da div 'e preciso setar o handler do mouseover novamente para que o js encontre o elemento.

&lt;html&gt;
&lt;head&gt;
&lt;script src="jquery.js"&gt;&lt;/script&gt;
&lt;script&gt;

$(function(){
	var div = "&lt;div class='over'&gt;over-me&lt;/div&gt;";
	
	$("button").click(function(){
		$("div#div").append(div);
			$("div.over").mouseover(function(){
				alert("yep");
			});
	})
});
&lt;/script&gt;
&lt;body&gt;

&lt;div id="div" &gt;&lt;/div&gt;
&lt;button&gt;btn&lt;/button&gt;
&lt;/body&gt;

&lt;/html&gt;
R

Jonhkr, muito obrigado! Resolveu o meu problema, mas antes de finalizar o tópico, eu gostaria de saber mais uma coisinha:

Como eu consigo pegar o valor que está dentro das tags (no exemplo, o 12) com jQuery?

&lt;div&gt;12&lt;/div&gt;

-Edit-

Consegui usando o $(‘div’).text();

J

Rafael Guerreiro:
Jonhkr, muito obrigado! Resolveu o meu problema, mas antes de finalizar o tópico, eu gostaria de saber mais uma coisinha:

Como eu consigo pegar o valor que está dentro das tags (no exemplo, o 12) com jQuery?

&lt;div&gt;12&lt;/div&gt;

-Edit-

Consegui usando o $(‘div’).text();

yes of course,

you can find more info here

http://jquery.com

R

Jonhkr:
Rafael Guerreiro:
Jonhkr, muito obrigado! Resolveu o meu problema, mas antes de finalizar o tópico, eu gostaria de saber mais uma coisinha:

Como eu consigo pegar o valor que está dentro das tags (no exemplo, o 12) com jQuery?

&lt;div&gt;12&lt;/div&gt;

-Edit-

Consegui usando o $(‘div’).text();

yes of course,

you can find more info here

http://jquery.com

Sim, sim, foi lá mesmo que eu aprendi a mexer um pouco com jQuery, mas eu demoro muito para achar o que estou procurando. Foi lá mesmo que eu encontrei o .text();

Muito obrigado pela disposição!

J

de nada :slight_smile:

Criado 23 de setembro de 2011
Ultima resposta 24 de set. de 2011
Respostas 11
Participantes 2