Вы не находитесь в области действия функций, поэтому:
$('.dw_add').on('click', { src: $(this).find('img').attr('src') },callback);
не будет работать, так как $ (это) не тот элемент, о котором вы думаете, потому что для выбранного элемента нет локальной области действия,no event.target или event.data и т. д.!
Однако это будет работать, так как имеет прямую ссылку на элемент и область видимости для «this»:
var callback = function(event){ console.log(event.data.src) }
var elm = $('.dw_add');
elm.on('click', { src: elm.find('img').attr('src') },callback);
иэто будет работать, так как $ (this) находится внутри области действия функции:
function callback(a){ console.log(a) }
$('.dw_add').on('click', function() {
var a = $(this).find('img').attr('src');
callback(a);
});
Кроме того, использование $ (this) внутри функции обратного вызова будет работать, как, опять же, внутри области функций и имеетссылка на целевой элемент.