如果你想複製整個html塊,你應該將你的內聯javascript代碼綁定到這個塊作爲容器。不是id。因此,當您移動或複製塊時,您的腳本將能夠找到與容器相關的任何元素。
<div id="containerOne" class="js-container">
<div class="js-text" data-text="some value">some value</div>
<script>
var $el = $("script").last().closest(".js-container").find(".js-text");
$el.text($el.data("text"));
</script>
</div>
因此,您可以通過class not id訪問元素。注意使用「js-」前綴僅用於JavaScript操作而不用於CSS樣式。
此外,您不需要更改腳本本身。您可以通過「data-」屬性更改值。
在你的外部腳本中,你可以用各種方法封裝任何克隆邏輯。例如:
var myModule = {
clone: function(containerSelector) {
var $donorEl = $(containerSelector);
var $donorScript = $donorEl.find('script');
$script = $("<script />");
$script.text($donorScript.text());
$recipientEl = $donorEl.clone();
$recipientEl.attr('id', 'containerTwo');
var newValue = 'other value';
$('.js-text', $recipientEl).data('text', newValue);
$('body').append($recipientEl);
$('script', $recipientEl).replaceWith($script);
}
};
myModule.clone('#containerOne');
你可以看到the working example。
我認爲應該有更好的解決方案克隆腳本元素。而divs沒有價值。 – epascarello
我建議不要這樣做。因爲在腳本元素中編輯JS會非常困難。 – evolutionxbox
我需要複製HTML,我需要它的處理程序,我怎樣才能以另一種方式做到這一點? 我不知道確切的金額塊,所以我不能一次寫所有的處理程序 – Dev