2009-08-24 2 views
2

Im Moment benutze ich Jeditable für Edit-in-Place-Funktionalität. Jeditable hat einige nette Optionen, aber (soweit ich weiß) erlaubt es Ihnen nicht, die Bearbeitung auszulösen, außer indem Sie auf das betreffende Element klicken.jQuery Editinplace-Plugin, mit dem Sie die Bearbeitung von einem anderen Element aus starten können

Ie, nehme an, mein Element hat ID comment. Mit Jeditable können Sie nur mit der Bearbeitung beginnen, indem Sie auf comment klicken. Was ich möchte ist, einen kleinen Text neben comment (z. B. "Klicken Sie hier, um Ihren Kommentar zu bearbeiten"), die, wenn geklickt, wird comment in ein bearbeitbares Textfeld (und Einrichten von Speichern und Abbrechen Schaltflächen usw.).

Antwort

1

Überprüfen Sie die trigger Methode von jQuery.

Benutzen Sie den Code wie:

$('#id-for-text').click(function(){ 
    $('#comment').trigger('click'); 
}); 
+0

seine erwähnenswert, dass Auslöser der Feststellung ist nur erforderlich, wenn Sie benutzerdefinierte benutzerdefinierte Handler haben. Sie können den gleichen Effekt wie oben erreichen, wenn Sie $ ("# comment"). click() –

+0

Aber ich brauche immer noch einen Weg, um tatsächlich auf "Kommentar" klicken nicht die Bearbeitung auszulösen (dh, es möglich machen, bearbeiten zu aktivieren mode * ONLY * wenn der Benutzer auf # id-for-text klickt, richtig? –

+0

Hinzufügen eines $ ('# Kommentar'). Unbind ('click') –

1

Basierend auf Ihre Kommentare über Sie dies tun könnte:

var editFn = (function(){ return $('#comment').click; })(); 
$('#id-for-text').click(editFn); 
$('#comment').unbind('click'); 

Dies das Etikett, das das Click-Ereignis sollte die gleiche sein wie der Kommentar Click-Ereignis erzählt, entbindet dann das Ereignis auf dem Kommentar.

Nicht sicher, ob die unbind den Verweis auf die editFn zerstören wird und somit die Schließung enthalten ist.

+0

Leider scheint '$ ('# comment'). Unbind ('click')' nicht zu funktionieren - das Feld kann immer noch mit einem Klick bearbeitet werden. Selbst wenn ich '$ (" * "). Unbind()' es ist immer noch anklickbar (obwohl nichts anderes ist, als erwartet). Wie könnte das möglich sein? –

+0

Hmm die einzige Möglichkeit könnte ich denken, dass dies immer noch möglich ist, wenn der Autor des Plugins .live() für das Ereignis anstelle von .click() verwendet. kannst du versuchen mit ("#comment"). die ("klick") statt zu lösen und mir zu sagen wie das geht. Stellen Sie sicher, dass der Selektor derselbe ist wie an das Jeditable-Plugin. –

+0

Seltsam - es funktioniert immer noch nicht. Probiere http://www.appelsiini.net/projects/jeditable/default.html mit Firebug aus. Selbst nachdem du '$ (" * ") gemacht hast. Unbind()' und '$ (" * "). Die()' kannst du immer noch klicken um zu editieren. –

5

Okay, ich habe den Fall geknackt. In this blog post, schreibt der Autor

Sie jetzt alle benutzerdefinierten Ereignis für Auslösung Jeditable verwenden können.

$(".editable").editable("http://www.example.com/save.php", { 
    event  : "make_editable" 
}); 

Also tat ich dies und dann tat

$("#id-for-text").click(function() { 
    $("#comment").trigger('make_editable'); 
    }); 
+0

gute Arbeit! froh, dass das für dich gelöst ist. auch nützlicher Leckerbissen von info für die Zukunft :) –

Verwandte Themen