【发布时间】:2012-04-18 10:36:05
【问题描述】:
在 Jsfiddle 上:http://jsfiddle.net/jhzux/
我在这个简单的脚本上浪费了很多时间。我想做的是启用在 jQuery 中克隆表单,然后让它们正常工作。
首先,当我在 JsFiddle 上运行此代码时,它不起作用,但在我的浏览器中却可以……奇怪……-.-
其次,$(this).next(".persianaops").slideToggle(300); 部分甚至不起作用,没有任何反应,只有 .persianaver 部分出现
当 persianaver 部分出现时,单选按钮并不总是有效,在第一个单元格中它可以正常工作,但后来在其他克隆中,单选按钮的行为就像每个单选按钮属于同一组一样,因此只能应用两次:在第一部分而不是在其中一个克隆中..(我希望你能在 Js fiddle 中看到这一点,因为我的解释有点令人困惑..)
那么有没有更好的方法来克隆带有工作单选按钮的 JQ 表并修复 .persianaops 部分?
HTML:
<ul id="listing" style="list-style:none;">
<li>
<table class="pedido">
<tr>
<td><select name="product[]">
<option value="0">
Perfil:
</option>
<option value=
"68mm 5 Cámaras AD rendszer egyenes szárny, ütköző tömítéssel">
68mm 5 Cámaras 7001AD, con dos juntas
</option>
<option value=
"68mm 7 K AD rendszer íves szárny, ütköző tömítéssel">
68mm 7 Cámaras 7001AD con dos juntas
</option>
<option value=
"80 mm 6 K Tok + 7 K íves szárny AD rendszer, ütköző tömítéssel">
80 mm Marco 6 Cámaras + Hoja de 7 Cámaras 7001AD con
dos juntas
</option>
<option value=
"68mm 7 K MD rendszer ütköző és középtömítéses, íves szárny">
68mm 7 Cámaras 7001MD con tres juntas
</option>
<option value=
"80 mm 8 K MD rendszer ütköző és középtömítéses, íves szárny">
80 mm 8 Cámaras 7001MD con tres juntas
</option>
</select></td>
</tr>
<tr>
<td><input class="comment" name="h[]" value="Horizontal"> x
<input class="comment" name="v[]" value="Vertical"> uds:
<input name="uds[]" style="width:60px;"></td>
</tr>
<tr>
<td>
<select>
<option>
Color
</option>
</select> Persiana <input class="persiana" name=
"persiana[]" type="checkbox">
<div class="persianaver" style=
"float:right; display:none">
Con motor<input name="f[]" type="radio" value=
"auto"> Manual<input name="f[]" type="radio" value=
"manual">
</div>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td style="width:435px;">
<div class="persianaops" style=
"float:right; display:none">
IMPORTANTE: En caso de haber seleccionado la opción
persiana usted tiene que especificar el tamaño de
la tapa del cajón (Lugar donde se sitúa la caja de
persiana) Puede especificarlo en el campo
comentario <a href="images/demo.jpg" id="pregunta"
name="pregunta"><img alt="pregunta" height="15"
src="images/ask.jpg" width="15"></a>
</div>
</td>
</tr>
<tr>
<td>
<textarea class="comment" cols="59" name="comment[]" rows=
"5">Comentario</textarea></td>
</tr>
</table>
</li>
</ul><button id="clonar" name="colnar">Cloneme</button><br>
<br>
<h3>Datos personales:</h3><br>
<table>
<tr>
<td>Nombre y apellido:</td>
<td><input name="name" type="text"></td>
</tr>
<tr>
<td>Email:</td>
<td><input name="mail" type="text"></td>
</tr>
<tr>
<td>Teléfono:</td>
<td><input name="telefono" type="text"></td>
</tr>
</table>
JQ
$(document).ready(function() {
var $orig = $(".pedido").clone();
$("#clonar").live('click', function(e) {
e.preventDefault();
$("#listing").append($orig.clone());
$(".persiana").click(function() {
$(this).next(".persianaver").slideToggle(300);
$(this).next(".persianaops").slideToggle(300);
});
$(".comment").focus(function() {
if (this.value === this.defaultValue) {
this.value = '';
}
}).blur(function() {
if (this.value === '') {
this.value = this.defaultValue;
}
});
});
});
【问题讨论】:
-
您的小提琴不起作用,因为至少在您发布的链接中,您从未通过从下拉列表中选择它来加载 jQuery。您使用的是什么版本的 jQuery?我看到您使用了已弃用的
live。从 jQuery 1.7 开始,您应该使用on或delegate。
标签: jquery html forms radio-button