我对这种形式有点困惑,我真的很感激一些帮助。
安装 customSelect() jquery 插件后,我不再能够在我的表单上选择克隆的选择框元素。
例如,转到...
http://gator1016.hostgator.com /~tamarind/index.php/en/book-now.html
单击第二张幻灯片>>单击“添加包”按钮>>尝试更改克隆的选择框值之一。
有人对为什么会这样有任何建议吗?我有点压力要解决这个问题。
提前致谢。
我对这种形式有点困惑,我真的很感激一些帮助。
安装 customSelect() jquery 插件后,我不再能够在我的表单上选择克隆的选择框元素。
例如,转到...
http://gator1016.hostgator.com /~tamarind/index.php/en/book-now.html
单击第二张幻灯片>>单击“添加包”按钮>>尝试更改克隆的选择框值之一。
有人对为什么会这样有任何建议吗?我有点压力要解决这个问题。
提前致谢。
您在表单脚本其余部分之前的单独脚本标签中运行 .customSelect() 。所以这是当前的事件顺序:
<span>
在每个选择旁边附加一个可自定义的(这是您为实现所需外观而设置的样式)。它还将事件侦听器附加到这些跨度上,以便它们可以与相应的选择元素正确交互。重要的是要注意,在这样做时,您不会复制事件侦听器,而只是复制元素。现在,即使您在克隆时再次运行 customSelect,您也可能会遇到某种问题,因为原始跨度仍然存在。
您的问题的解决方案是保留对尚未应用 customSelect 的表单块克隆的引用。然后每次插入新的表单块时,都需要将 customSelect 应用于“vanilla”表单块。
这是为您提供的简化示例
HTML
<form action="" id="myForm">
<div id="formBlock">
<select><option>one</option><option>two</option></select>
</div>
</form>
<button id="addNew">add new</button>
jQuery
//do this first:
var formBlock = $('#formBlock').clone();
//now .customSelect();
$('#formBlock select').customSelect();
$('#addNew').click(function(e){
e.preventDefault();
var newFormBlock = formBlock.clone().appendTo('#myForm'); //clone the reference to un-modified form block!!!
newFormBlock.attr({
id:'' //dont want duplicate id's
});
newFormBlock.find('select').customSelect();
});
演示:http: //jsfiddle.net/adamco/ZZGJZ/1/
您还可以清理插件添加的元素,然后再次启动 customSelect:
$('form').find('span.customselect').remove(); //remove the span
$('form').find('select.hasCustomSelect').removeAttr("style"); //clean inline style
$('form select').customSelect( { customClass: "customselect" } ); // fire again customSelect