2010-10-01 114 views
1

我試圖使用JavaScript和jQuery做一些繪圖我的jQuery按鈕不起作用,這裏是我定義按鈕的代碼,但我第一次點擊它不工作,第二次運作良好,我不明白爲什麼。當我點擊第一次

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

有人可以幫忙解釋嗎? 謝謝!

Mengfei

+0

你將不得不揭示了什麼_getData()_做。它可能*有助於首先將元素附加到DOM,然後附加事件處理程序,但可能不會。 – Thomas 2010-10-01 13:04:39

+0

嗨,的getData()下載從另一臺服務器的數據和在海軍報,我不太明白你的意思是「appedn的元素到DOM」,繪製它你能解釋一下多一點? – Mengfei 2010-10-01 13:10:05

回答

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

編輯評論

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 2010-10-01 13:26:56

+0

嘗試這個簡單的事件處理 – 2010-10-01 13:42:06

0

因爲點擊操作是'p'。 jquery會返回外部html的對象,在你的情況'p'。試試這個:

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

'$( '')上單擊(的getData).wrap( '

').parent()appendTo(' #情節');':) – 2010-10-01 13:07:36

+0

喜丹,與您的代碼,我沒有得到的按鈕... – Mengfei 2010-10-01 13:18:11

+0

尼克你好,你的代碼仍然需要兩次點擊.. – Mengfei 2010-10-01 13:18:51

0

您是否嘗試從您的代碼中刪除「p」標籤?

+0

嗨,我只是想和第一次點擊仍然不工作 – Mengfei 2010-10-01 13:07:19

相關問題