0

我有一个包含复选框输入的克隆元素。当克隆元素未选中时,我需要源元素也未选中。有没有办法在 jQuery 中做到这一点?还是我以错误的方式(即使用clone())?我应该提一下,我的问题类似于这个SO question,除了我需要在克隆元素更改时更新原始元素,而不仅仅是维护参考。

4

3 回答 3

1

由于它是一个复选框,并且您特别关心选中/取消选中该框,因此您可以侦听事件“ change ”,该事件将在每次框的checked状态更改时触发。

var copy = $('#my-element').clone();

copy.change(function(){
    $('#my-element').replaceWith(copy.clone());
});
于 2017-09-22T22:39:05.957 回答
0

在克隆元素上添加一个事件侦听器,以便在更改原始元素时更新它。

像这样的东西

var initial = $('some-element'),
    cloned = initial.clone();

cloned.on('change', function(){ 
    initial
        .prop('checked', this.checked)
        .trigger('change'); 
});
于 2017-09-22T22:33:59.857 回答
0

$(document).ready(function () {
	var $source = $("#source input[type='checkbox']");
	var $target = $source.clone(true, true);
	$("#target").append($target);
  
  // set current source value ..
  $($source).prop("checked", $target.prop("checked"));
  // update source to target and vice-verse, on change ...
	$target.change((event) => {
		$($source).prop("checked", $(event.target).prop("checked"));
	});
	$source.change((event) => {
		$($target).prop("checked", $(event.target).prop("checked"));
	});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="source">
  <span>source</span>
  <input type="checkbox"/>
</div>

<div id="target">
  <span>target</span>
</div>

于 2017-09-22T23:21:42.377 回答