[英]how to replace element contents with new html without loosing javascript function?
[英]retain some html elements without replace new same html element
我的li內有復選框,我希望dlbclick可以編輯li,但是它將刪除checbox。 我可以將復選框和文本值一起包括在內,但是我不想這樣做嗎?
$(document).on('dblclick', '#li', function () {
oriVal = $(this).text();
$(this).text("");
input = $("<input type='text' id='input'>");
input.appendTo($(this)).focus();
});
$(document).on('focusout', '#input', function () {
if ($(this).val() != "") {
newInput = $(this).val();
$(this).hide();
$(this).closest('li').text(newInput);
} else {
$(this).closest('li').text(oriVal);
}
});
html
<ul>
<li id="li">
<input type="checkbox" name="1" value="1">item 1</li>
<li id="li">
<input type="checkbox" name="2" value="2">item 2</li>
</ul>
看到
<ul>
<li class="li">
<input type="checkbox" name="1" value="1"/><span>item 1</span>
</li>
<li class="li">
<input type="checkbox" name="2" value="2"/><span>item 2</span>
</li>
</ul>
和
$(document).on('dblclick', '.li', function () {
var $this = $(this),
text = $.trim($this.text());
$this.data('text', text);
$("<input />", {
value: text,
'class': 'edit'
}).appendTo($(this).find('span').empty()).focus();
$this.find('input[type="checkbox"]').hide();
});
$(document).on('focusout', '.edit', function () {
var value = $.trim(this.value),
$li = $(this).closest('li');
$li.find('span').text(value == '' ? $li.data('text') : value)
$li.find('input[type="checkbox"]').show();
});
演示: 小提琴
由於您具有id為li
多個元素,因此請勿使用id屬性,而應使用class,因為元素的ID在文檔中必須唯一
檢查一下:
只需選中“ li”之外的復選框即可。 然后,您可以使用CSS根據您的文本排列復選框。
<ul>
<input type="checkbox" name="1" value="1"><li id="li">item 1</li>
<input type="checkbox" name="2" value="2"><li id="li">item 2</li>
</ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.