我正在尝试以下代码,但它无效。
var option=$('<input type="text" value=""/>');
$(this).append($(option));
$(option).focus();
我也尝试过使用:
$(this).children().first().focus();
但这也不起作用。
这是完整的功能:
var templatestring = "<tr><td class='itemId' style='display:none'></td><td id='tdelement' class='Correct'></td><td id='tdelement' class='Option'></td></td><td id='tdelement' class='Action'><input type='button' value='View' onclick='view(this)'/></td><td id='tdelement' class='Remove'><img src='" + STATIC_URL + "img/delete.jpg' width='20' height='20' align='center'></td></tr>";
var template = $(templatestring);
$("#addoption").button().click(function() {
var newrow = $(template).clone();
$(newrow).children().each(function() {
switch($(this).attr('class')) {
case 'itemId':
$(this).html('');
break;
case 'Option':
var option=$('<input type="text" value=""/>');
$(this).append($(option));
$(this).find('input:text').val('11');
$(option).focus();
break;
case 'Correct':
$(this).html('<input type="radio" class="Answer" name="correct"/>');
break;
case 'Action':
$('input:button', this).val('Add');
break;
}
});
$('#datatable tbody').append(newrow);
});
如果有任何帮助我使用谷歌浏览器。
答案 0 :(得分:1)
什么是$(this)
?如果不在选择器功能中,则this
将引用窗口。如果你想附加到身体,你可以这样做
var option=$('<input type="text" value=""/>');
$('body').append($(option)); // You can also use div , selector instead of body
$(option).focus();
HTML
<table>
<tr>
<td>Add</td>
</tr>
</table>
JS
$('td').click(function() {
var option = $('<input type="text" value=""/>');
$(this).append($(option));
$(option).focus();
});
OP更新后,我可以看到为什么以上解决方案不适合您。将focus
追加到input
后,您需要致电table
。试试这个:
var templatestring = "<tr><td class='itemId' style='display:none'></td><td id='tdelement' class='Correct'></td><td id='tdelement' class='Option'></td></td><td id='tdelement' class='Action'><input type='button' value='View' onclick='view(this)'/></td><td id='tdelement' class='Remove'><img src='" + STATIC_URL + "img/delete.jpg' width='20' height='20' align='center'></td></tr>";
var template = $(templatestring);
var option;
$("#addoption").button().click(function() {
var newrow = $(template).clone();
$(newrow).children().each(function() {
switch ($(this).attr('class')) {
case 'itemId':
$(this).html('');
break;
case 'Option':
option = $('<input type="text" value=""/>');
$(this).append($(option));
$(this).find('input:text').val('11');
$(option).focus();
break;
case 'Correct':
$(this).html('<input type="radio" class="Answer" name="correct"/>');
break;
case 'Action':
$('input:button', this).val('Add');
break;
}
});
$('#datatable tbody').append(newrow);
$(option).focus();
});