Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Carrego um conteudo Ajax e junto com ele vem HTML e JS, existe um marcador que está relacionado a um elemento HTML, quando eu clico e este elemento tem um atributo exemplo data-onload="funcaoOla()" esta função tbm carregada pelo ajax deve ser executada.
Dúvida como eu faço uma chama de função desta forma, seria como exec("funcaoOla")
Vou tentar explicar o que necessito
Supondo que em minha página tenha 2 funções
function Sexo(val){
if (val=='1'){
alert('Feminino');
}else{
alert('Masculino');
}
}
function Idade(val){
if (val<18){
alert('Menor');
}else{
alert('Maior');
}
}
São apenas exemplos, a ideia é que ao receber por exemplo um retorno de uma $.ajax() contendo por exemplo 'Sexo(1)' ele vai e executa a função, isso em js ou jquery. a Ideia é chamar funções conforme os retornos de outras páginas.
O que estou fazendo se baseia em criaçãod e layout como tela de uma app, exemplo toda vez que faço show() de uma div se na estrtura dela contiver por exemplo data-**load(Idade(2))** fazer a exibição eu estaria conferindo as tag deste elemente e chamando a função.
seria uma forma de chamar uma função com base em uma stringVocê então pode está usando mais de um atributo data exemplo:
<div data-funcao="idade" data-parametro="2">
Daí é só jogar para alguma função os valores obtidos pelo dataset **funcao **e **parametro**.
Essa função checa o valor e executa a função:
function executaOutra(NomeDaFuncao, Param) {
switch(NomeDaFuncao) {
case 'sexo':
Sexo(Param);
break;
case 'idade':
Idade(Param);
break;
}
}
Se bem que se a coisa for bem estruturada, basta apenas executar a função de acordo com o conteúdo, ao invés de consultar posteriormente para saber o que fazer.Encontrei uma forma que resolveu meu problema
<button id="btn1">Show</button>
<button id="btn2">Hide</button>
<div id="quad" style='width:50px;height:50px; border:1px solid #000'>DIV</div>
<div id="console"></div>
$('#btnShow').click(function(){
$('#foo').show();
});
$('#btnHide').click(function(){
$('#foo').hide();
});
(function ($) {
$.each(['show', 'hide'], function (i, ev) {
var el = $.fn[ev];
$.fn[ev] = function () {
this.trigger(ev);
return el.apply(this, arguments);
};
});
})(jQuery);
$('#foo').on('show', function(){
$('#console').html( $('#console').html() + '#foo is now visible'+ '<br>' )
});
$('#foo').on('hide', function(){
$('#console').html( $('#console').html() + '#foo is hidden'+ '<br>' )
});
Não existe algo como isso.
Qualquer data-????? é um atributo dataset que não possui vínculos de comando a ele, o que se usa muito é para fins de manipulação de conteúdo aos quais são mais práticos de encontrar no documento.
Bom, para clicar em determinado elemento você pode usar onclick="funcaoOla"
E para executar a função pós ajax você pode está usando o ouvinte de evento readystatechange para monitorar a resposta, quando ela estiver pronta para ser escrita você apenas chama a função que deseja.
https://github.com/Spell-Master/sm-web/blob/master/javascript/jsd/js-default.js#L501
Outra forma quando por exemplo houver uma tag javascript no resultado da resposta e você precisa que o script seja executado mesmo que esse resultado seja mostrada por innerHTML. Nesse caso você deve varrer o texto do resultado obtendo somente o texto contido dentro da tag, então você cria uma nova tag javascript e escreve o script que extraiu anteriormente e substitui a tag não funcional pela nova criada que a coisa vai funcionar.
https://github.com/Spell-Master/sm-web/blob/master/javascript/jsd/js-default.js#L501
Por fim exec se tornou obsoleto e já foi avisado que futuras versões dos navegadores não irão mais reconhecer essa função.