[英]Trying to append an element jQuery
用户从我的下拉列表中选择一个选项后,我试图创建一个元素。 不幸的是我没有得到我想要的结果。 我获得的结果如下所示:
如您所见,在用户选择了每个选项之后,“删除”链接会增加。 在创建的div
和anchor元素之间也没有空间。 我想我需要一个for循环来解决递增链接remove
。 但是我真的不知道如何。 我尝试了以下方法:
$("#theSelect").change(function() { var value = $("#theSelect option:selected").val(); var theDiv = $(".is" + value); //theDiv.slideDown().removeClass("hidden"); $("#theSelect option:selected").attr('disabled', 'disabled'); var $div = $("<div>", { id: "foo", class: "a", text: value }); //$div.click(function(){ /* ... */ }); $(".selectContainer").append($div); var newLink = $("<a />", { id: "id5", name: "link", href: "#", text: "remove" }); $(".a").append(newLink); }); $("div a.remove").click(function() { var value = $(this).attr('rel'); var theDiv = $(".is" + value); $("#theSelect option[value=" + value + "]").removeAttr('disabled'); $(this).parent().slideUp(function() { $(this).addClass("hidden"); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="selectContainer"> <select id="theSelect"> <option value="">- Select -</option> <option value="Patient">Patient</option> <option value="Physician">Physician</option> <option value="Nurse">Nurse</option> </select> </div> <!-- <div class="hidden isPatient">Patient <a href="#" class="remove" rel="Patient">remove</a></div> --> <!-- <div class="hidden isPhysician">Physician <a href="#" class="remove" rel="Physician">remove</a></div> --> <!-- <div class="hidden isNurse">Nurse <a href="#" class="remove" rel="Nurse">remove</a></div> -->
重要的错误是您div.a
remove链接附加到所有div.a
元素
只需将其附加到新创建的( 您对此有一个引用 )
代替
$(".a").append(newLink);
采用
$new.append(newLink);
另外,如果您多次访问所使用的元素,则应将其缓存。 如果可用,也最好使用本机属性
所以这
var value = $("#theSelect option:selected").val();
var theDiv = $(".is" + value);
//theDiv.slideDown().removeClass("hidden");
$("#theSelect option:selected").attr('disabled','disabled');
可以变成
var option = this.options[this.selectedIndex],
value = option.value,
theDiv = $(".is" + value);
option.disabled = true;
持续,
rel
属性 select
元素时都会创建一个新元素 id5
因为您创建了多个具有相同id的链接,而这是无效的 所有变化在一起
$("#theSelect").change(function(){
var option = this.options[this.selectedIndex],
value = option.value;
var theDiv = $(".is" + value);
//theDiv.slideDown().removeClass("hidden");
option.disabled = true;
var $div = $("<div>", {id: "foo", class: "a", text: value });
//$div.click(function(){ /* ... */ });
$(".selectContainer").append($div);
var newLink = $("<a />", {
name : "link",
href : "#",
text : "remove",
rel : value,
click: remove
});
$div.append(newLink);
});
function remove() {
var value = $(this).attr('rel');
var theDiv = $(".is" + value);
$("#theSelect option[value=" + value + "]").removeAttr('disabled');
$(this).parent().slideUp(function() { $(this).remove(); });
};
$(".a").append(newLink);
将newLink
附加到所有匹配的标签。 这是在你的情况下,每一个有标记类a
(即护士,病人)。
但是,您要做的是将remove
仅附加到具有a
类的最后一个标签上。
然后:
$(".a:last").append(newLink);
将为您工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.