2016-05-07 22 views
-3

Ich habe ein Problem mit Append-Funktion. Dieser Code funktioniert nicht ordnungsgemäß.jQuery Append onclick Funktion funktioniert nicht

$(element).append("<a onclick='test('test')'> <i class='fa fa-spin fa-pencil' aria-hidden='true'></i></a>"); 

Testfunktion:

function test(value) 
{ 
alert(value); 
} 

Ich vermute, dass das Problem auf Onclick-Funktion in Zusammenhang steht.

+1

"Dieser Code funktioniert nicht richtig." ist keine ausreichende Problembeschreibung. – PeeHaa

+4

Sehen Sie das Problem mit diesem Teil Ihres Codes nicht? 'onclick = 'test (' test ')'' –

+0

Sehen Sie sich die von Ihren Seiten generierten HTML an und Sie werden das Problem sehen – Adjit

Antwort

-2

Verwenden `Zitat statt '

habe ich eine jsbin hier. II hoffe, das ist, was Sie versuchen

http://jsbin.com/wicanok/edit?html,js,output

$('#element').append("<a onclick='test(`test`)'> <i class='fa fa-spin fa-pencil' aria-hidden='true'>Hi</i></a>"); 
+1

Vielleicht erklären, was das OP falsch gemacht hat? – Adjit

+0

Warum bist du so schnell ... es funktioniert ... –

1

Sie tun müssen innerhalb Apostrophe entkommen:

$(element).append("<a onclick='test(\"test\")'> <i class='fa fa-spin fa-pencil' aria-hidden='true'></i></a>"); 

Und stellen Sie sicher test() global definierte (und nicht innerhalb Dokument bereit Beispiel). Hier

ein Beispiel:

window.test = function(value){ 
 
\t alert(value); 
 
}; 
 
$('div').append("<a onclick='test(\"test\")'>click me</a>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div>

1

Wie in den Kommentaren erwähnt, können Sie nicht verschachtelt ähnliche Anführungszeichen in einem String wie Sie gerade tun. Sie müssen sie mit einem Backslash entkommen:

function test(value) { 
 
alert(value); 
 
} 
 

 
var element = $('body'); 
 

 
$(element).append("<a onclick='test(\"test\")'> <i class='fa fa-spin fa-pencil' aria-hidden='true'></i>Click Me</a>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

0

Du bist besser dran, dass Inline-JS nehmen zusammen und mit jQuery den Ereignis-Listener hinzuzufügen (mit event delegation weil Sie hinzufügen neue Elemente zum DOM).

$(element).append('<a class="test">...'); 

$(document).on('click', '.test', function() { 
    test('test'); 
}); 
Verwandte Themen