2012-02-24 2 views
0

J'ai un JSFiddle qui semble fonctionner, mais ce n'est pas le cas.Comment mettre à jour un événement 'onclick' dans jquery?

function copyform(curnum){ 
    if(curnum == 3) $('p').html('Thank You!') 
    var num = $('form').length; 
    var newNum = new Number(num + 1); 

    // create the new element via clone(), and manipulate its ID using newNum value 
    var newElem = $('#form'+curnum).clone().attr('id', 'form' + newNum); 

    // 
    //this is where I need to update the onclick to copyform('+newNum+') 
    $('#form'+newNum+' input').attr('onclick', 'copyform('+newNum+')'); 

    // insert the new element after the last "duplicatable" input field 
    $('form').after(newElem); 

} 

J'ai juste besoin d'aide pour implémenter la fonction onclick. Cela fait partie d'un programme plus vaste et plus complexe qui serait un exemple difficile à montrer. Toute aide est très appréciée!

+0

élaborée, qu'est-ce que vous essayez d'atteindre? – Grigor

+3

Pourquoi dans le monde utiliseriez-vous jQuery en conservant les attributs onClick? Utilisez des écouteurs d'événement. –

+2

Oh s'il vous plaît non, pourquoi liez-vous les gestionnaires de click de cette façon? Avez-vous complètement manqué le point de jQuery? –

Répondre

0

Je transforme votre fonction un peu:

http://jsfiddle.net/yjAeS/3/

function copyform(curnum){ 
    var curnum = + $(this).closest('[data-num]').attr('data-num'); 

    // put the message into current form's <p> only 
    if(curnum == 3) $('#form'+curnum+' p').html('Thank You!') 

    // let's put the last form into a variable for cloning and appending 
    var $lastForm = $('#form'+curnum); 

    var newNum = 1 + $('form').length; // number+string => number 
    var $newElem = $lastForm.clone().attr({ 
    'id': 'form'+newNum, 
    'data-num': newNum // store the form number in a custom attribute 
    }); 

    $lastForm.after($newElem); 
} 

$(function(){ 
    // we don't have to attach event manually to each cloned form 
    // http://api.jquery.com/on/ 
    $('body').on('click','form input[type="button"]', copyform); 
}); 
​ 
Questions connexes