2013-02-08 98 views
1

我搜索了四周我找不到答案。在我的代碼中,一個鏈接創建在一個div內,並給出一個onclick值來將一個參數傳遞給一個函數。我無法弄清楚爲什麼它不會起火。.append鏈接不會觸發onclick函數

var imgCount = 0; 
var curImg; 


function resetImg(target) { 
alert(target); 
} 



$(".add").click(function() { 
imgCount = imgCount + 1; 
curImg = "theImg" + imgCount; 


//Here we add the remove link 
$('#links') 
    .append('<a href="#" onclick="javascript:resetImg(\'' + curImg + '\');" class="dynamic">Call Function</a>'); 
$('.dynamic').css('display', 'block'); 
}); 

這裏的小提琴: http://jsfiddle.net/stewarjs/4UV7A/

我一直在使用。點擊嘗試創建鏈接時,但傳遞的參數必須是唯一的每個環節()。我試過抓住$(this).attr(「id」),但是這個值回到undefined。

感謝您的幫助。 傑夫

回答

0

總有擺脫onclick處理的方式。以下是我想做到這一點:

var image_count = 0; 

$('#links').on('click', '.dynamic', function(e) { 
    e.preventDefault() 

    alert($(this).data('image')); 
}); 

$('.add').click(function() { 
    $('<a />', { 
     'href': '#', 
     'data-image': 'theImg' + (++image_count), 
     'class': 'dynamic', 
     'text': 'Call function' 
    }).appendTo('#links'); 
}); 

演示:http://jsfiddle.net/4UV7A/4/

+0

非常感謝大家的幫助。這是最終爲我工作的人。我知道必須有比我所做的更好的方式。再次感謝。 – Jeff 2013-02-09 10:18:12

1

從的onclick刪除javascript:,就應該喜歡這樣:onclick="resetImg(\'' + curImg + '\');"

+0

我想同樣的事情,但它仍然無法正常工作因爲某些原因:http://jsfiddle.net/ExplosionPIlls/4UV7A/2/ – 2013-02-08 20:21:39

+0

它的工作原理,但你必須改變onLoad到無包裝(頭) – pwolaq 2013-02-08 20:23:37

+0

,當然,用$(document).ready(function(){...})包裝jQuery函數。 – pwolaq 2013-02-08 20:24:59

4

,而不是試圖裂傷HTML轉換成JavaScript,我建議你使用已經提供給您的jQuery方法。

$('#links') 
    .append($("<a>").attr('href', '#').on('click', function() { resetImg(curImg); 
}).addClass('dynamic').text('Call Function')); 

http://jsfiddle.net/ExplosionPIlls/4UV7A/1/