2010-10-01 2 views
1

Я пытаюсь использовать javascript и jquery, чтобы сделать какой-либо заговор, вот код, который я определяю кнопкой, но в первый раз, когда я нажимаю его, работа, во второй раз, когда он работает хорошо, я не понимаю, почему.моя кнопка jquery не работает, когда я нажимаю первый раз

$('<p><input type="button" value="Plot Data" /></p>').click(getData).appendTo('#plot'); 

Не могли бы помочь объяснить это? Спасибо!

Mengfei

+0

Вы будете иметь, чтобы показать то, что делает _getData() _. Он * может * помочь сначала добавить элемент в DOM, а затем присоединить обработчик событий, но, возможно, нет. – Thomas

+0

Привет, getData() загружает данные с другого сервера и записывает их на флот, я не совсем понимаю, что вы понимаете под «appedn to the element to DOM», не могли бы вы объяснить немного больше? – Mengfei

ответ

1
var 
    // function for event click 
    getData = function(ev) { 
     alert('ok'); 
    }, 
    // your button 
    button = $('<input type="button" value="Plot Data" />').click(getData), 
    // append to p container 
    pcontainer = $('<p></p>').append(button).appendTo('#plot'); 

example

EDIT для комментариев

var 
    // counter clicks 
    clickCounter = 0, 
    // function for event click 
    getData = function(ev) { 

     $('#controlClick').append('click in getData '+(++clickCounter)+'<br />'); // firsts lines 

     // your code; 
     // don't put return false or ev.stopPropagation() 
    }, 
    controlEvent = function(ev) { 
     $('#controlClick').append('click in control<br />'); 
    }, 
    // your button 
    button = $('<input type="button" value="Plot Data" />') 
    .bind('click', getData) 
    .bind('click', controlEvent), 
    // append to p container 
    pcontainer = $('<p></p>').append(button).appendTo('#plot');​ 

example update

+0

Привет Андрес, спасибо за пример, я изменил ваш код, но ему все еще нужно дважды щелкнуть, возможно, что-то не так с моей функцией getData ... действительно запутано сейчас. – Mengfei

+0

попробуйте эту простоту обработки событий –

0

Поскольку действие нажмите на 'р'. JQuery вернет объект внешнего html, в вашем случае «p». Попробуйте это вместо:

$('#plot').append($('<p></p>').append($('<input type="button" value="Plot Data" />').wrap('').click(getData))); 
+0

'$ (''). Click (getData) .wrap ('

') .parent(). AppendTo ('# plot');' :) –

+0

Привет, Dan, с вашим кодом я не получил кнопку ... – Mengfei

+0

Привет, Ник, с вашим кодом, который все еще нужно дважды щелкнуть .. – Mengfei

0

Вы пытались удалить «p» теги из своего кода?

+0

Привет, я просто попробовал и первый клик все еще не работает – Mengfei

Смежные вопросы