2009-09-11 3 views
6

Ho pensato/cercando un equivalente del problema che sto avendo sotto, e non è stato trovato nulla. C'è un modo per riscriverlo per funzionare con jQuery come alternativa?Conversione di "document.getElementById" in jQuery

Prima metà del codice.

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

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

Seconda metà del codice.

<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> 

Mentre io voglio fare un jQuery var richiesta di tipo cosa. Voglio che lo onclick="request(this) funzioni con il mio jQuery.

+1

Cambiare l'href è piuttosto semplice, ma non ho idea di cosa si stia realmente cercando di fare. Forse una spiegazione di ciò che stai cercando di ottenere sarebbe d'aiuto. Cambiare semplicemente l'href da solo sembra piuttosto inutile come un'azione. – tvanfosson

+0

Ho 5 pulsanti, e lo voglio dove ogni volta che viene premuto un pulsante, lo richiede, in modo che dopo che le richieste siano soddisfatte, cambierà href per "id (about)". Attualmente href = "#" consente loro di non procedere, per così dire? – Homework

risposta

10

La risposta alla tua domanda (titolo) è quello di sostituire

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

con

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

Non ho idea se questo sarà effettivamente h elp tu risolvi il tuo problema, però, dal momento che davvero non so cosa stai cercando di fare. Sulla base dei tuoi commenti e esempi di codice, sembra che tu stia tentando di eseguire una sorta di procedura guidata, ma non ho idea di come funzionerebbe in base a ciò che hai pubblicato.

Aggiornamento:

Forse qualcosa di simile:

<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

Ti piace? Penso che manchi/non capisco qualcosa però ...

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

Questo? Non so se ho pienamente capito quello che vuoi

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

invocato da:

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

Richiede? Che cos'è? La pagina al link? – tvanfosson

+0

Perché non rimuovere completamente il tag di ancoraggio in modo che non possano nemmeno cliccarci sopra? – tvanfosson

2

Per comodità è possibile definire un ulteriore metodo sul $ oggetto

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

si può poi basta cambiare tutte le chiamate da

document.getElementById 

a

$.getElementById 

Ci sono tonnellate di avvertimenti con questo, ma può essere utile a seconda della situazione.

+0

Puoi dare un suggerimento sui caveat – nus