2009-09-11 16 views
6

He estado pensando/búsqueda de un equivalente del problema que estoy teniendo más abajo, y nada se le halló. ¿Hay alguna manera de reescribir esto para trabajar con jQuery como alternativa?la conversión "document.getElementById" en jQuery

Primera mitad del código.

<a href="link.php?test=true" onclick="request(this)" target="_blank"> 

<a id="step2" href="javascript:alert('NOT FINISHED!');"> 

Segunda mitad del código.

<script language="javascript"> 
var requests = 16; 

function request(self) 
{if(self.href != "#") 
requests -= 1; 

self.childNodes[0].src = "images/clear.gif"; 

if(requests === 0) 
document.getElementById("step2").href = "next.php";} 
</script> 

Mientras que yo quiero hacer una cosa tipo de solicitud jQuery var. Quiero onclick="request(this) para trabajar con mi jQuery.

+1

Cambio del href es bastante fácil, pero no tengo ni idea de lo que realmente están tratando de hacer. Tal vez una explicación de lo que está tratando de lograr ayude. Simplemente cambiar el href solo parece bastante inútil como una acción. – tvanfosson

+0

Tengo 5 botones, y yo quiero que cada vez que se pulsó un botón, que lo solicite, por lo que después de que se cumplan las peticiones, que va a cambiar el href para "Identificación (aproximadamente)". Actualmente, href = "#" les permite no continuar, ¿por así decirlo? – Homework

Respuesta

10

La respuesta a su pregunta (título) es reemplazar

document.getElementById('about').href = '#'; 

con

$('#about').attr('href','#'); 

No tengo idea si esto realmente h Aunque resuelves tu problema, ya que realmente no sé lo que estás tratando de hacer. En función de sus comentarios y muestra de código, parece que está intentando hacer algún tipo de asistente, pero no tengo idea de cómo funcionaría realmente, dado lo que ha publicado.

Actualización:

Tal vez algo como:

<a href="link.php?test=true" onclick="request(this)" target="_blank" class='request'></a> 

<a id="step2" href="next.php">Step 2</a> 

<script language="javascript"> 
    $(function() { 
     var requests = 16; 
     $('#step2').click(function() { 
      alert('Not finished'); 
      return false; 
     }); 
     $('.request').click(function() { 
      var $this = $(this); // save jQuery reference to element clicked 

      // swap indicator image source 
      $this.find('img:first').attr('src','images/clear.gif'); 

      // if the number of flipped indicators equals the number of requests 
      // remove the click handler from the step 2 link 
      // this removes the alert and allows the user to proceed 
      if ($('.request img[src="images/clear.gif"]').length == requests) { 
       $('#step2').unbind('click'); 
      } 

      ...do something with the href for this request via ajax??? 

      // replace this handler with one that simply returns false 
      // and remove the href since we're done with this request 
      $(this).unbind('click').attr('href','#').click(function() { return false; }); 

      // stop the default action for the request 
      return false; 
    }); 
</script> 
2

gusta esta? Creo que me falta/no entiendo algo ...

$('#about').click(function(evt) { 
    request(this); 
}); 
0

Esto? No estoy seguro totalmente conseguir lo que quieres

function request(element) 
{ 
    $(element).doSomething(); 
    return false; 
} 

invocada por:

onclicked="return request(this);" 
+0

¿Lo solicita? ¿Qué es? La página en el enlace? – tvanfosson

+0

¿Por qué no eliminar la etiqueta de anclaje por completo para que ni siquiera puedan hacer clic en ella? – tvanfosson

2

Para mayor comodidad se puede definir un método adicional sobre el $ objeto

$.getElementById = function(id){ 
    return $('#'+id).get(0); 
}; 

continuación, puede simplemente cambiar todas sus llamadas de

document.getElementById 

a

$.getElementById 

Hay un montón de advertencias con esto, pero pueden ser útiles dependiendo de su situación.

+0

¿Podría darnos una pista sobre las advertencias? – nus

Cuestiones relacionadas