Чтобы связать их всех с доступом к $(this)
, используйте .each()
, например:
$('textarea[name*=quote]').each(function() {
$(this).limit('10',$(this).closest('form').find('span[name*=qc]'));
});
Если вы хотите .live()
-подобную функциональность во второй части, вам нужно либо использовать .livequery()
, например:
$('textarea[name*=quote]').livequery(function() {
$(this).limit('10',$(this).closest('form').find('span[name*=qc]'));
});
Или, альтернативно, связывайте их, как в первом примере, а также связывайте при загрузке новых элементов, например если вы используете $.ajax()
, это будет выглядеть так:
$.ajax({
url: blah.html
success: function(data) {
//do something with data
$('textarea[name*=quote]', data).each(function() {
$(this).limit('10',$(this).closest('form').find('span[name*=qc]'));
});
}
});
Здесь ключ , data
, обеспечивает контекст для поиска в , поэтому он выполняется только для элементов, найденных в возвращенных данных. Вы также можете заключить это в функцию, чтобы предотвратить дублирование кода, например:
function bindStuff(context) {
$('textarea[name*=quote]', context || document).each(function() {
$(this).limit('10',$(this).closest('form').find('span[name*=qc]'));
});
}
В document.ready
, звоните bindStuff(document)
, в $.ajax
, вы бы позвонили bindStuff(data)
.