2012-04-10 15 views
7
parte

HTML:Javascript obtener el elemento DOM una función se llama desde

<a href="#" onclick="callme();return false;">foo</a> 

JS parte:

function callme() { 
    var me = ?; //someway to get the dom element of the a-tag 
    $(me).toggle(); 
} 

en la parte JS puedo conseguir de alguna manera la una etiqueta que esta función se llama ¿de?

Sé que podría pasarlo como un parámetro, pero esta función se utiliza muchas veces en una página y quiero evitar poner el parámetro en todas partes.

gracias!

Respuesta

10

Dado que está utilizando un atributo onclick (¡MALO!), Debe pasarlo a la función.

onclick="callme(this); return false;" 

y los js:

function callme(el) { 
    var $me = $(el); 
    $me.doSomething(); 
} 

Otra opción es establecer el contexto de la función utilizando .call().

onclick="callme.call(this,event)" 

y el js

function callme(event) { 
    event.preventDefault(); 
    $(this).doSomething(); 
} 
+3

+2 para el uso de '.call()'; -1 para implicar que los atributos de clic son malos. ;) –

+0

Creo que realmente no son MALOS, simplemente no es un estilo de programación que sugeriría a cualquiera. –

+1

Suponiendo que el OP utilizará jQuery, solo ha etiquetado esto como javascript. – Maess

0

enviar this parámetro a su función.

<a href="#" onclick="callme(this);return false;">foo</a> 

function callme(me) { 
    $(me).toggle(); 
} 
4

que tienen una simple función de JS para que

function getEventTarget(event) { 
    var targetElement = null; 
    try { 
     if (typeof event.target != "undefined") { 
      targetElement = event.target; 
     } 
     else { 
      targetElement = event.srcElement; 
     } 
     // just make sure this works as inteneded 
     if (targetElement != null && targetElement.nodeType && targetElement.parentNode) { 
      while (targetElement.nodeType == 3 && targetElement.parentNode != null) { 
       targetElement = targetElement.parentNode; 
      } 
     } 
    } catch (ex) { alert("getEventTarget failed: " + ex); } 
    return targetElement; 
}; 

en su html

<a href="#" onclick="callme.call(this,event);return false;">foo</a> 

en su función

function callme(event) { 
    var me = getEventTarget(event); //someway to get the dom element of the a-tag 
    $('#'+ me.id).toggle(); 
} 

getEventTarget() va a traer de vuelta el conjunto objeto dom que puedes mani pulate lo que quiera, o se haya dicho ya por otros usuarios que sólo puede utilizar

function callme(event) { 
     $(this).toggle(); 
} 
0

mejor no uso onlcick en el formato HTML

$(document).ready(function() { 
    $("a").click(callme); 
}) 

function callme() { 
    var me = this; 
    $(me).toggle(); 
} 
Cuestiones relacionadas