2013-04-16 11 views
5

Dinamik olarak oluşturulan anchor öğesinin onClick olay işleyicisi işlevinin argümanlarında bir dize iletmeye çalışıyorum, http://jsfiddle.net/shmdhussain/bXYe4/ kemanına bakın.Dinamik olarak oluşturulmuş öğe öğesinin onclick işlevinin özniteliğinde bir dize geçirme

Ben işleve dize geçmek mümkün değilim, ama işlevine sayı tamsayı geçmek mümkün duyuyorum. Lütfen bana yardım et. Şimdiden teşekkürler.

html:

<DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>test</title> 
     <link rel="stylesheet" href="mystyle.css" class="cssfx"/> 

     <script src="/jquery.min.js"></script> 
     <script src="colon.js"></script> 
    </head> 

    <body> 

     <div class="mytest"> 

     </div> 


    </body> 
</html> 
</html> 

JavaScript:

var elem=[ {"name":"husain","url":"http://google.com","age":21}, 
      {"name":"ismail","url":"http://yahoo.com","age":22}, 
      {"name":"nambi","url":"http://msn.com","age":23} 
     ] 

jQuery(function($){ 
    var str=""; 
    for(i=0;i<elem.length;i++){ 
     str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>" 
     console.log(str); 

    } 
    $('.mytest').html(str); 

}); 

function test(url){ 
    console.log("url is "+url); 
} 

cevap

16

Sen doğru dize sytax gerekiyor. Sen onclick için kullanabilirsiniz ve test parametreleri olamaz

<a href='#' onclick='test('http://domain.tld')'>dd</a><br><br> 

Bu

"<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br><br>" 

sonuçlanacaktır. ..

<a href='#' onclick='test('your_url')'>dd</a><br/><br/> 

: Kullanım \" yerine

"<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br><br>" 

str+="<a href='#' onclick='test('"+elem[i].url+"')'>dd</a><br/><br/>";"<a href='#' onclick='test('your_url')'>dd</a><br/><br/>" gibi bir dize döneceğini,

<a href='#' onclick='test("http://domain.tld")'>dd</a><br><br> 
2

Kişisel sorundur sonuçlanır Bu böyle bir html üretecektir Bu durumda, onclick niteliği yalnızca 'testi (' içeriyor.

Bu deneyin: Doğrudan kullanmak

<a href='#' onclick='test("your_url")'>dd</a><br/><br/> 
+0

Teşekkürler Yanıt için. Benim için çalışıyor. –

1

:

test('"+elem[i].url+"') 

yerine:

'test('"+elem[i].url+"')' 

içeride dize geçmesine

str+="<a href='#' onclick='test(\""+elem[i].url+"\")'>dd</a><br/><br/>"; 

Bu böyle bir html üretecektir bir metod. Sorunuzu yanlış olmadıysa

1

, burada Cevabınız;

var elem=[ {"name":"husain","url":"http://google.com","age":21}, 
    {"name":"ismail","url":"http://yahoo.com","age":22}, 
    {"name":"nambi","url":"http://msn.com","age":23} 
] 

jQuery(function($){ 
    var str=""; 
    for(i=0;i<elem.length;i++){ 
     var a =$('<a>',{href:'#',text:'dd'}); 
     a.click(function(e){ 
       test(elem[i].url) 
     }); 
     $('.mytest').append(a).append($('</br>')).append($('</br>')); 

    } 
}); 

function test(url){ 
    console.log("url is "+url); 
} 
+0

Bu da uygulamak için başka bir yöntem, Fısıltı teşekkürler. Ama AmShaegar'ın aşağıdaki cevabından istediğim gibi uygularım. –

1

birden çok parametre geçirmeden için, gibi tek tırnak için biz &#39;

var str= "&#39;"+ str+ "&#39;"; 

Eğer onclick(str) etkinliğe geçebilir aynı parametresini kullanabilirsiniz ASCII değeri ile birleştirerek dize yayınlayabilirsiniz. Birden fazla parametre ilettiğimiz durumlarda faydalıdır. Her tarayıcıda çalışır.

0

doğrudan kullanımı:

test('elem[i].url') 

yerine:

test('"+elem[i].url+"') 

bir yöntem içinde dize geçmek için.

İlgili konular