2016-11-07 8 views
0

Ich habe eine Schaltfläche in meiner HTML-Vorlage:Ändern Daten-Tooltip mit AJAX nicht funktioniert

  <a class="tooltipped" id="stash_recipe_tooltip" data-position="bottom" data-delay="50" 
       data-tooltip="{{ stash_tooltip }}"> 
       <div id="stash_recipe_btn" class="detail_footer_btn btn-floating col2 center"> + </div> 
      </a> 

später, in der HTML-Datei, die ich habe:

<script> 
function add_recipe_to_stash() { 
    var stash_plus_or_minus = document.getElementById("stash_recipe_btn").innerHTML 
    $.ajax({ 
    url: '/ajax/add_recipe_to_stash/', 
    type: 'GET', 
    data: { 
     # this goes to a django view that, in essence, returns a new 'stash_tooltip' var and 'stash_plus_or_minus' var 
     'stash_plus_or_minus': stash_plus_or_minus, 
    }, 
    dataType: 'json', 
    success: function (data) { 
     document.getElementById("stash_recipe_btn").innerHTML = data.stash_plus_or_minus; 
     $("#stash_recipe_tooltip").attr('data-tooltip', data.stash_tooltip); 
    } 
    }); 
} 
function addClickHandlers() { 
    $("#stash_recipe_btn").click(add_recipe_to_stash); 
} 
</script> 

Es scheint wie

$("#stash_recipe_tooltip").attr('data-tooltip', data.stash_tooltip); 

sollte meine Tooltip ändern, aber nichts passiert. Haben Sie eine Idee, wie Sie den Data-Tooltip erfolgreich aktualisieren können, ohne die Seite zu aktualisieren? Ich habe verschiedene Variationen der obigen Zeile ausprobiert, aber ich kann es nicht aktualisieren.

+0

Verwenden Sie die 'Daten()' Funktion statt. '$ ("# Stash_recipe_tooltip") Daten ('tooltip', data.stash_tooltip) ' – Dekel

+0

Hm, scheint keine Wirkung zu haben. :/ –

+0

Welche Tooltipp-Bibliothek verwenden Sie? – Dekel

Antwort

1

können Sie verwenden, um die tooltip Funktion dafür:

success: function (data) { 
    document.getElementById("stash_recipe_btn").innerHTML = data.stash_plus_or_minus; 
    $("#stash_recipe_tooltip").tooltip('tooltip', data.stash_tooltip); 
} 
+0

Upvoting weil Das ist es, was die Dokumentation vorschlägt. Funktioniert derzeit nicht in meinem Code, aber möglicherweise gibt es ein anderes Problem. Vielen Dank. –

+0

Das ist ** nicht ** was du in dem Kommentar zu der Frage hast ... beachte den Unterschied ... – Dekel

+1

'.tooltip ('NEUES TOOLTIP')' ** vs ** '.tooltip ('tooltip', 'NEW TOOLTIP'); ' – Dekel

0

starten:

$('#someElement').prop('tooltipText', 'new title');