我有一个在 $(document).ready() 上执行这个 javascript 的网页。.editable() 来自X-Editable javascript 库(就地编辑)。
$('tr td:nth-child(2) a').editable();
我页面上的链接/按钮允许向表中添加行。有没有办法只对 new 执行 editable() 而不是使用与以前相同的选择器并让它再次获取所有匹配项?
$('#newCriteria').click(function () {
var id = 0;
// load template
var cTemplate = $('#criteriaTemplate').html();
// fill template
var template = cTemplate.format(id, 'New Field');
// attach editable (doesnt work)
$('tr td:nth-child(2) a', template).editable();
// append to table
$('#criteriaTable').append(template);
});
如您所见,我想我会尝试将模板 html 作为上下文传递给 jQuery,但由于在我附加它之前它实际上并不是 DOM 的一部分,所以它不起作用。
另一种可能的解决方案是我可以将选择器修改为'tr:last-child td:nth-child(2) a'
.
我想知道是否有一些为什么要在元素上使用 .on() 来让 jQuery 自动为我添加处理程序。我过去只使用过 .on() 来添加处理程序.on('click', '...', function() {})
,我不知道它是否可以用于诸如可编辑()之类的东西。
模板:
<script type="text/template" id="criteriaTemplate">
<tr data-criteriaID='{0}'>
<td><i class="icon-remove" /></td>
<td><a href="#">{1}</a></td>
<td><a href="#" data-value="0">String</a></td>
</tr>
</script>