Bernd: JS Variable einfügen

Hallo,

ist es möglich die ID dynamisch einzufügen?

$("#test").load(window.location + " #test");

"test" sollte durch

var test = $(this).data('item-id');

ersetzt werden.

Meine Idee war

$("#test").load(window.location + " #test");

dann wird die ID test gesucht, was natürlich falsch ist.

  1. @@Bernd

    $("#test").load(window.location + " #test");
    
    1. ist das Leerzeichen falsch; #test muss ohne Leerzeichen am Vorigen hängen.

    2. ist das Anhängen falsch. Wenn der URI schon ein Query enthält (bspw. https://example.net#foo), dann darf kein zweiter angehängt werden: https://example.net#foo#test wäre falsch; es müsste https://example.net#test sein.

      Du brauchst den Query nicht window.location zu hängen. Es sollte reichen, einfach nur den Query #test anzugeben; der realtive Pfad bezieht sich ja auf die aktuelle Ressource.

    3. Wenn du keinen festen String meinst, sondern eine Variable, dann sollte die nicht in " (bzw. ') stehen, sondern sowas in der Art:
      $("#test").load("#" + $(this).data('item-id'));.

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    1. Hallo Gunnar,

      vielen Dank für deine Antwort. Meine zwei Funktionen sehen wie folgt aus

      $( "#servus" ).click(function() {
      			var test = $(this).data('item-id');
      	    	$("#tag").val(test);
      
      		});
      
      
      		$( "#tagInsert" ).submit(function( event ) {
      
      			event.preventDefault();
      
      			var send = $("#tagInsert").serialize();
      
      			$.ajax({
      				
      				type: 	  "POST",
      				url:  	  "insertTags.php",
      				data:     send,
      				dataType: 'json',
      				
      				success:  function(data) {
      
      					$("#"+test).load(window.location + "#"+test);
      
      					$.fancybox.close();
      
      				}
      			
      			});
      
      		});
      

      In den Entwicklertools erhalte ich folgende Meldung
      "Uncaught ReferenceError: test is not defined"

      Wenn ich es richtig verstehe kann ein Wert von einer anderen Funktion nicht in eine weitere Funktion mit übernommen werden? Oder kann ich ein Wert aus "var send" in den Success Teil übernehmen? Es geht um die ID #tag

      1. Hab es so versucht

        $( "#tagInsert" ).submit(function( event ) {
        
        			event.preventDefault();
        
        			var send = $("#tagInsert").serialize();
        			var mT   = $("#tag").val();
        
        			$.ajax({
        				
        				type: 	  "POST",
        				url:  	  "insertTags.php",
        				data:     send,
        				dataType: 'json',
        				
        				success:  function(data) {
        
        					$("#b_"+mT).load(window.location + "#b_"+mT);
        
        					$.fancybox.close();
        
        				}
        			
        			});
        
        		});
        

        Jetzt wird zwar aktualisiert, aber die ganze Seite wird in die Seite geladen, was nicht richtig ist.

    2. Hi,

      1. ist das Anhängen falsch. Wenn der URI schon ein Query enthält (bspw. https://example.net#foo), dann darf kein zweiter angehängt werden: https://example.net#foo#test wäre falsch; es müsste https://example.net#test sein.

      Deine Beispiele passen nicht zum Text - im Text geht es um die Query, in den Beispielen um den Fragment Identifier.

      Du brauchst den Query nicht `window.location` zu hängen. Es sollte reichen, einfach nur den Query `#test` anzugeben; der realtive Pfad bezieht sich ja auf die aktuelle Ressource.
      

      s.o.

      cu,
      Andreas a/k/a MudGuard

      1. @@MudGuard

        Deine Beispiele passen nicht zum Text - im Text geht es um die Query, in den Beispielen um den Fragment Identifier.

        Grmpf, letzteres war gemeint und hätte auch im Text stehen sollen haben gemusst.

        LLAP 🖖

        --
        “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory