Проблема в том, что вы объявляете attributes
внутри этого .focus()
обработчика только (поэтому он не будет доступен в более высоком click
объеме.
Вместо этого он должен быть определен в области, которую вы хотите использовать, установить в обработчике событий, например так:
var attributes;
$('.edit').focus(function() {
attributes = $(this).closest('tr').attr('class');
});
Однако в вашем случаевы захотите использовать эти данные , когда произойдет фокусировка , в целом выглядит так:
function jedit() {
$('#container').delegate('.edit', 'focus', function() {
var result = $(this).closest('tr').attr('class').split("-"),
controller = result[0],
field = result[1],
id = result[2];
$(this).editable(basepath+controller+'/edit/'+field+'/'+id,{
indicator:'<img src="'+basepath+'images/throbber.gif">'
});
});
}
Кроме того, в качестве отступления, если class
не используется для другие причины, например стилизация ... рассмотрите возможность использования атрибута data-
специально для данных, а не браузера, пытающегося найти / применить класс CSS здесь.