2015-01-05 17 views
-1

我正在嘗試創建動態按鈕並單擊事件。創建動態按鈕正在工作,但當我克服它,我收到未定義的消息。我的錯誤是什麼?對不起我的郎。 Thx提前。我的代碼如下:在Jquery上獲取未定義的id消息的動態按鈕事件

$(function(){ 
    var i = 1; 

$('button').on('click',function(){ 
     var r= $('<input type="button" class="dinamik" value="new button '+ i +' "/>'); 
     $("body").append(r); 
     i++; 
    }); 
}); 

    $(function(){ 
     $(document).on('click', '.dinamik', function(){ 
      var valueDeger = $(this).find('.dinamik').attr('value'); 
      alert("Value değeri: " + valueDeger); 
    }); 
}); 

Demo is here.

+0

你必須委託點擊事件'.dynamic'元素。搜索一千個重複的... –

+1

@Rory McCrossan:問題與標題無關,所以不是這些答案的重複。這只是濫用'this'。 –

回答

1

裏面的單擊事件處理程序,this referes到按鈕本身,就沒有必要使用find方法:

$(function(){ 
    $(document).on('click', '.dinamik', function(){ 
     var valueDeger = $(this).attr('value'); 
     alert("Value değeri: " + valueDeger); 
    }); 
}); 

JSFiddle Demo


使用val()方法,而不是attr('value')建議,請參閱本Stack Overflow question

+0

最後一個實際說明+1 :) –

+0

對於值屬性,'val()'比'attr()'更可取。有時你需要超越最初的錯誤,並鼓勵良好的做法:) –

+1

@TrueBlueAussie我已經將它添加到答案作爲旁註':)'。 – dashtinejad

2

改變這一點:

var valueDeger = $(this).find('.dinamik').attr('value'); 

這樣:

var valueDeger = $(this).val(); // or this.value; 

的問題是$(this)指的是你的input[type="button"],你正在努力尋找其中的.find('.dinamik')單擊元素,這不在那裏,所以這就是爲什麼它是未定義的。

0

var valueDeger = $(this).find('.dinamik').attr('value'); 

更改爲

var valueDeger = $(this).val(); 
+0

已經回答。 – Jai

+0

當我發佈時,你的答案不存在,這就是爲什麼我發佈 – Sadikhasan

1

Demo

試試這個

$(function(){ 
    var i = 1; 
    $('button').on('click',function(){ 
     var r= $('<input type="button" class="dinamik" value="new button '+ i +' "/>'); 
     $("body").append(r); 
     i++; 
    }); 
}); 

$(function(){ 
    $(document).on('click','.dinamik', function(){ 
     var valueDeger = $(this).val(); 
     alert("Value değeri: " + valueDeger); 
    }); 
}); 
+1

對於值屬性,'val()'優於'attr()'。有時你需要超越最初的錯誤,並鼓勵良好的做法:) –

+0

是你寫,謝謝你@TrueBlueAussie –

相關問題