2009-08-16 8 views
0

Ich bin mit Jquery.Wie man angehängten Inhalt manipuliert? Jquery

ich hängten HTML in ein div wie folgt aus:

$('div#byletter').append(createLettersHtml()); 

Die createLettersHtml Funktion eine Liste von Buchstaben (Links), alle in 'div.ln-Buchstaben' gewickelt erzeugt. Dann möchte ich ein 'onclick' Ereignis wie folgt anrufen:

aber nichts passiert! Wenn ich auf ein nicht angehängtes HTML-Element klicke, funktioniert es, aber es funktioniert nicht mit angehängtem Inhalt. Was mache ich falsch?

UPDATE:

Hier ist voll Code:

$(document).ready(function(){ 

$.fn.listnav = function(options) { 
     var opts = $.extend({}, $.fn.listnav.defaults, options); 
     var letters = ['_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '-']; 
     var firstClick = false; 
     opts.prefixes = $.map(opts.prefixes, function(n) { return n.toLowerCase(); }); 

$('div#byletter').append(createLettersHtml());  

function createLettersHtml() { 
       var html = []; 
       for (var i = 1; i < 27; i++) { 
        if (html.length == 0) html.push('<a class="all" href="#">ALL</a><a class="_" href="#">0-9</a>'); 
        html.push('<a class="' + letters[i] + '" href="#">' + ((letters[i] == '-') ? '...' : letters[i].toUpperCase()) + '</a>'); 
       } 
       return '<div class="ln-letters">' + html.join('') + '</div>' + ((opts.showCounts) ? '<div class="ln-letter-count" style="display:none; position:absolute; top:0; left:0; width:20px;">0</div>' : ''); // the styling for ln-letter-count is to give us a starting point for the element, which will be repositioned when made visible (ie, should not need to be styled by the user) 
      } 



    }; 

    $.fn.listnav.defaults = { 
     initLetter: '', 
     includeAll: true, 
     incudeOther: false, 
     includeNums: true, 
     flagDisabled: true, 
     noMatchText: 'No matching entries', 
     showCounts: true, 
     cookieName: null, 
     onClick: null, 
     prefixes: [] 
    }; 


    $('.ln-letters a').click(function(){ 

     alert(123); 

}); 

}); 
+0

Können Sie die volle js einfügen, damit wir einen besseren Griff bekommen können, was passiert wo. Es ist unmöglich, aus den begrenzten Informationen, die Sie angegeben haben, zu unterscheiden. – redsquare

Antwort

0

Sie festgelegt haben, klicken evet nachdem Sie HTML-Inhalte anhängen. Bist du sicher, dass du das tust? Verwenden Sie Firebug oder Opera Dragonfly, um zu überprüfen, ob Sie Fehler in Ihrem JS haben.

+0

Ich bin ein Novize in js, also verstehe ich eigentlich nicht, was du mit AFTER meinst. Nun, ja, es geht nach diesem Anhang String: $ ('div # byletter'). Append (createLettersHtml()); – Andersson83

+0

Firebug zeigt keine Fehler btw – Andersson83

+0

Nach dem bedeutet, dass Sie den Inhalt zuerst anhängen und dann click-Ereignis festlegen. Wenn Sie das vorher tun, existiert das Element nicht und das Skript bricht ab. – usoban

5

können Sie versuchen, .live verwenden. Sie können dies in Doc bereit machen. .live funktioniert gut für angehängte Inhalte.

$(function(){ 
    $('div.ln-letters a').live('click', function(){ 
     alert(123); 
    }); 
}); 
+0

mit .Live Ereignis Inhalt erscheint überhaupt nicht – Andersson83

+0

nicht sicher, was du meinst. Das Anhängen eines Ereignisses sollte für das Anhängen von Inhalt keine Rolle spielen. Können Sie die Funktion createLettersHtml veröffentlichen, damit wir eine bessere Vorstellung davon bekommen, was Sie tun möchten. – redsquare

+0

Sicher, ich habe dies als ein Update zu dieser Frage hinzugefügt – Andersson83

Verwandte Themen