簡體   English   中英

將輸入更改為div,反之亦然

[英]Changing input to div and vice versa

我有一些代碼可以將輸入更改為div

$(document).ready(function(){
    $('#btnChange').click(function(){
        $('#products, #mrp, #discount').replaceWith(function(){
                return '<div id="'+this.id+'">'+this.value+"</div>";
        });
    });
});

我想要的是在div的第二次單擊按鈕時更改它們以輸入相同的id和相同的值。 或者你可以說撤消我在第一次點擊時所做的事情。

嘗試

$(document).ready(function () {
    $('#btnChange').click(function () {
        $('#products, #mrp, #discount').replaceWith(function () {
            if ($(this).is('input')) {
                return $('<div />', {
                    id: this.id,
                    //use text to prevent html injection
                    text: this.value
                });
            } else {
                return $('<input />', {
                    id: this.id,
                    value: this.innerHTML
                });
            }
        });
    });
});

演示: 小提琴

你可以使用jQuery的.toggleClass()
例如,如果您有此表單:

<form id="myForm">
    <input type="text" id="myInput" class="visible clickable" />
    <div id="myDiv" class="hidden clickable">Hello</div>
</form>

.visible.hidden定義是:

.visible {
    display: inline;
}

.hidden {
    display:none;
}

那你的javascript應該是:

$('.clickable').click(function() {
    $('#myForm .clickable').toggleClass('visible').toggleClass('hidden');
});

這是一個有用的jsFiddle: http//jsfiddle.net/A4Lvu/

您可以存儲現有元素並重新加載它們,如下所示:

$(document).ready(function () {
    var collection = {};
    $('#btnChange').click(function () {
        $('#products, #mrp,  #discount').each(function () {
            if (this.nodeName.toLowerCase() === 'input') {
                collection[this.id] = this;
                $(this).replaceWith('<div id="' + this.id + '">' + this.value + "</div>");
            } else {
                $(this).replaceWith(collection[this.id]);
            }
        });
    });
});

這里有一個小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM