2016-10-04 1 views
0

Ich versuche, einen Link zu machen, der beim Klicken in eine Textbox verwandelt wird. Die Textbox ist standardmäßig "fokussiert", und wenn Sie irgendwo außerhalb der Textbox klicken (wodurch sie "unfokussiert" wird), kehrt sie zur ursprünglichen Verknüpfung zurück. Ich versuche, die Funktion replaceWith() in JQuery zu verwenden , aber konnte es nicht richtig bekommen.Die Verknüpfung wird in die Textbox aber und aus irgendeinem Grund, den ich nicht richtig verstehe, kehrt sie nicht in die Verbindung zurück, wenn die Textbox "nicht fokussiert" ist die Geige, die ich geschaffen habe, dies zu veranschaulichen. Kann mir jemand sagen, was ich falsch hier tue.replaceWith() in JQuery

der Code, den ich verwendet habe, ist,

<script> 
    $(document).ready(function() { 
     $('a.edit').click(function() { 
     var removed = $(this).replaceWith("<input type='text' class='searchBox'/>"); 
     $('input.searchBox').focus(); 
     }); 

     $('input.searchBox').focusout(function() { 
     $(this).replaceWith('<a class="edit" href="#">Edit</a>'); 
     }); 
    }); 
</script> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> 

<div class="controls"> 
    <a class="edit" href="#">Replace Link</a> 
</div> 

Vielen Dank. :)

Antwort

1

Bringen Ereignisse Mutter .controls Element, Verwendung Ereignis Delegation

$(document).ready(function() { 
 
    $(".controls").on("click", 'a.edit', function() { 
 
    var removed = $(this).replaceWith("<input type='text' class='searchBox'/>"); 
 
    $('input.searchBox').focus(); 
 
    }); 
 

 
    $(".controls").on("focusout", 'input.searchBox', function() { 
 
    $(this).replaceWith('<a class="edit" href="#">Edit</a>'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> 
 
</script> 
 
<div class="controls"> 
 
    <a class="edit" href="#">Replace Link</a> 
 
</div>

+0

Dank viel für die Antwort. Ich lerne immer noch JQuery und deine Post hilft sehr. :) – Sudo

+0

@Sudu Siehe auch [Warum findet jQuery oder eine DOM-Methode wie getElementById das Element nicht?] (Http://stackoverflow.com/questions/14028959/why-does-jquery-or-ddom-method -wie-geelementbybid-not-find-the-element /), [Grundlegendes zur Delegierung von Ereignissen] (https://learn.jquery.com/events/event-delegation/) – guest271314

Verwandte Themen