停止传播jquery
我有这段代码,但是当我克隆一个元素时,操作也会被克隆。 中看到问题
<script type="text/javascript">
$(document).ready(function() {
$('.edit').editable('http://save.php', {
indicator : 'Saving...',
submit : 'OK',
cancel : 'Cancelar',
});
});
$(document).ready(function () {
$('#btnAdd').live('click', function(){
var num = $('.clonedInput').length;
var newNum = new Number(num + 1);
var newElem = $('#input' + num).clone(true).prop('id', 'input' + newNum);
newElem.children(':text').prop('name', "myformdata[job][]").prop('job', 'job').val('');
$('#input' + num).after(newElem);
$('#btnDel').prop('disabled', '');
if (newNum == 4) $('#btnAdd').prop('disabled', 'disabled');
});
$('#btnDel').live('click', function(){
var num = $('.clonedInput').length;
$('#input' + num).remove();
$('#btnAdd').prop('disabled', '');
if (num - 1 == 1) $('#btnDel').prop('disabled', 'disabled');
});
$('#btnDel').prop('disabled', 'disabled');
});
</script>
<div class="clonedInput" id="input1">
<span style="float: left;">job</span>
<div class="edit" id="job="myformdata[job][]">Job</div>
</div>
<div id="copy">
<input class="format" type="button" id="btnAdd" value="Ad" />
<input class="format" type="button" id="btnDel" value="Re" />
</div>
我想要的只是每个元素的单独操作。您可以在演示demo
I have this code, but when I clone an element, then the action is also cloned. What i want is just individual actions for each element.You can see the problem in demo
<script type="text/javascript">
$(document).ready(function() {
$('.edit').editable('http://save.php', {
indicator : 'Saving...',
submit : 'OK',
cancel : 'Cancelar',
});
});
$(document).ready(function () {
$('#btnAdd').live('click', function(){
var num = $('.clonedInput').length;
var newNum = new Number(num + 1);
var newElem = $('#input' + num).clone(true).prop('id', 'input' + newNum);
newElem.children(':text').prop('name', "myformdata[job][]").prop('job', 'job').val('');
$('#input' + num).after(newElem);
$('#btnDel').prop('disabled', '');
if (newNum == 4) $('#btnAdd').prop('disabled', 'disabled');
});
$('#btnDel').live('click', function(){
var num = $('.clonedInput').length;
$('#input' + num).remove();
$('#btnAdd').prop('disabled', '');
if (num - 1 == 1) $('#btnDel').prop('disabled', 'disabled');
});
$('#btnDel').prop('disabled', 'disabled');
});
</script>
<div class="clonedInput" id="input1">
<span style="float: left;">job</span>
<div class="edit" id="job="myformdata[job][]">Job</div>
</div>
<div id="copy">
<input class="format" type="button" id="btnAdd" value="Ad" />
<input class="format" type="button" id="btnDel" value="Re" />
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您不想克隆数据和处理程序,请使用
.clone()
而不是.clone(true)
。如果您希望单个克隆元素应用该插件,请在克隆该元素后应用它。
If you don't want to clone data and handlers, use
.clone()
instead of.clone(true)
.If you want the individual cloned element to have the plugin applied, then apply it after you've cloned the element.
RightSaid 是正确的,只需使用 .clone() 不带任何参数,它不会克隆处理程序/数据。
至于您的代码,我认为这就是您想要的: http://jsbin.com/unebex/11 /
您必须在创建新元素时将其设置为“可编辑”。无需在这些按钮上使用 .live(),因为您没有创建这些按钮的新实例。
RightSaid is correct, just use .clone() w/o any parameters and it will not clone the handlers/data.
As for your code, I think this is what you were going for: http://jsbin.com/unebex/11/
You have to set the new elements to 'editable' as you create them. There is no need to use .live() on those buttons since you are not creating new instances of those buttons.