2009-09-11 18 views
6

Ich habe nach einem Äquivalent des Problems gesucht, das ich unten habe, und es konnte nichts gefunden werden. Gibt es eine Möglichkeit, dass ich das umschreiben kann, um mit jQuery als Alternative zu arbeiten?"document.getElementById" in jQuery konvertieren

Erste Hälfte des Codes.

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

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

Zweite Hälfte des Codes.

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

Während ich eine jQuery var Anforderungsart tun wollen. Ich möchte onclick="request(this) mit meinem jQuery arbeiten.

+1

Ändern der Href ist ziemlich einfach, aber ich habe keine Ahnung, was Sie wirklich versuchen zu tun. Vielleicht hilft eine Erklärung dessen, was Sie erreichen möchten. Allein das Ändern des hrefs scheint als Aktion ziemlich sinnlos. – tvanfosson

+0

Ich habe 5 Tasten, und ich möchte, dass es jedes Mal, wenn eine Taste gedrückt wird, es anfordert, so dass, nachdem die Anforderungen erfüllt sind, wird die href für "id (about)" ändern. Derzeit die href = "#" so dass sie nicht fortfahren, sozusagen? – Homework

Antwort

10

Die Antwort auf Ihre Frage (Titel) ist

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

mit

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

Ich habe keine Ahnung, ob das tatsächlich h Aber du löst dein Problem, weil ich wirklich nicht weiß, was du zu tun versuchst. Basierend auf Ihren Kommentaren und dem Codebeispiel scheint es, dass Sie versuchen, eine Art von Assistenten zu erstellen, aber ich habe keine Ahnung, wie es tatsächlich funktionieren würde, wenn Sie das, was Sie gepostet haben, bearbeiten.

Update:

Vielleicht so etwas wie:

<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

Gefällt mir? Ich denke, ich vermisse/verstehe etwas nicht obwohl ...

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

Dies? Nicht sicher, ob ich voll bekommen, was Sie wollen

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

aufgerufen von:

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

Fordert es? Was ist es? Die Seite am Link? – tvanfosson

+0

Warum entfernen Sie nicht einfach das Anker-Tag, so dass sie nicht einmal darauf klicken können? – tvanfosson

2

Zur Vereinfachung Sie eine zusätzliche Methode auf dem $ Objekt definieren

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

Sie können dann nur alle Anrufe ändern aus

document.getElementById 

zu

$.getElementById 

Es gibt Unmengen von Einschränkungen mit diesen, aber es kann je nach Ihrer Situation nützlich sein.

+0

Könnten Sie einen Hinweis auf die Vorbehalte geben? – nus

Verwandte Themen