Jquery 在创建新div时循环使用
我有一个div,我们叫它class=“phoneNo”。在div内部有两个链接,一个是添加另一个与之类似的div,另一个是删除div本身。我试图创建一个循环,如果只有一个div,“delete”链接应该隐藏,如果有多个div,“delete”链接应该显示在所有div上。Jquery 在创建新div时循环使用,jquery,Jquery,我有一个div,我们叫它class=“phoneNo”。在div内部有两个链接,一个是添加另一个与之类似的div,另一个是删除div本身。我试图创建一个循环,如果只有一个div,“delete”链接应该隐藏,如果有多个div,“delete”链接应该显示在所有div上。 到目前为止,我提出了这个,但没有成功: var pCount = $(".phoneNo").length; $(pCount).each(function(){
到目前为止,我提出了这个,但没有成功:
var pCount = $(".phoneNo").length;
$(pCount).each(function(){
if (pCount <= 1) {
$("a.deleteThis").hide();
}
else if (pCount >= 1) {
$("a.deleteThis").show();
}
return true;
});
代码的问题是,您正在将一个int存储到pCount中,然后尝试获取该int的jQuery对象。我会有一点不同的想法。请记住,您可以将选择器与空格链接,以便在父级中对其进行范围限定
if ($(".phoneNo").length == 1)
$(".phoneNo a.deleteThis").hide();
else
$(".phoneNo a.deleteThis").show();
更新
确保每次创建或删除phoneNo时都运行上述逻辑
<div class="phoneNoCollection">
<div class="phoneNo">
<input type="text" name="phoneNo" value="123 456 7890"/>
<a class="deleteThis">Delete</a>
<a class="add">Add another</a>
</div>
</div>
<script type="text/javascript">
$(function() {
// initial setup
$(".phoneNo .deleteThis").click(removeParent);
$(".phoneNo .add").click(appendPhoneNo);
checHide();
});
function checkHide() {
// logic from above
if ($(".phoneNo").length == 1)
$(".phoneNo a.deleteThis").hide();
else
$(".phoneNo a.deleteThis").show();
}
function removeParent(e) {
$(e.target.parent).remove();
checkHide();
}
function appendPhoneNo() {
var el$ = $("<div class='phoneNo'><input type='text' name='phoneNo'/>" +
"<a class='deleteThis'>Remove</a><a class='add'>Add another</a></div>"));
$el.child(".deleteThis").click(removeParent);
$el.child(".add").click(appendPhoneNo);
$el.appendTo(".phoneNoCollection");
checkHide();
}
</script>
删除
再加一个
$(函数(){
//初始设置
$(“.phoneNo.deleteThis”)。单击(删除父项);
$(“.phoneNo.add”)。单击(appendPhoneNo);
切奇德();
});
函数checkHide(){
//自上而下的逻辑
如果($(“.phoneNo”).length==1)
$(“.phoneNo a.deleteThis”).hide();
其他的
$(“.phoneNo a.deleteThis”).show();
}
函数removeParent(e){
$(e.target.parent).remove();
选中隐藏();
}
函数appendPhoneNo(){
变量el$=$(“”+
“删除另一条”);
$el.child(“.deleteThis”)。单击(removeParent);
$el.child(“.add”)。单击(appendPhoneNo);
$el.附件(“.phoneNoCollection”);
选中隐藏();
}
您的代码的问题是,您正在将一个int存储到pCount中,然后尝试获取该int的jQuery对象。我会有一点不同的想法。请记住,您可以将选择器与空格链接,以便在父级中对其进行范围限定
if ($(".phoneNo").length == 1)
$(".phoneNo a.deleteThis").hide();
else
$(".phoneNo a.deleteThis").show();
更新
确保每次创建或删除phoneNo时都运行上述逻辑
<div class="phoneNoCollection">
<div class="phoneNo">
<input type="text" name="phoneNo" value="123 456 7890"/>
<a class="deleteThis">Delete</a>
<a class="add">Add another</a>
</div>
</div>
<script type="text/javascript">
$(function() {
// initial setup
$(".phoneNo .deleteThis").click(removeParent);
$(".phoneNo .add").click(appendPhoneNo);
checHide();
});
function checkHide() {
// logic from above
if ($(".phoneNo").length == 1)
$(".phoneNo a.deleteThis").hide();
else
$(".phoneNo a.deleteThis").show();
}
function removeParent(e) {
$(e.target.parent).remove();
checkHide();
}
function appendPhoneNo() {
var el$ = $("<div class='phoneNo'><input type='text' name='phoneNo'/>" +
"<a class='deleteThis'>Remove</a><a class='add'>Add another</a></div>"));
$el.child(".deleteThis").click(removeParent);
$el.child(".add").click(appendPhoneNo);
$el.appendTo(".phoneNoCollection");
checkHide();
}
</script>
删除
再加一个
$(函数(){
//初始设置
$(“.phoneNo.deleteThis”)。单击(删除父项);
$(“.phoneNo.add”)。单击(appendPhoneNo);
切奇德();
});
函数checkHide(){
//自上而下的逻辑
如果($(“.phoneNo”).length==1)
$(“.phoneNo a.deleteThis”).hide();
其他的
$(“.phoneNo a.deleteThis”).show();
}
函数removeParent(e){
$(e.target.parent).remove();
选中隐藏();
}
函数appendPhoneNo(){
变量el$=$(“”+
“删除另一条”);
$el.child(“.deleteThis”)。单击(removeParent);
$el.child(“.add”)。单击(appendPhoneNo);
$el.附件(“.phoneNoCollection”);
选中隐藏();
}
$(pCount)。每个都不是有效的选择器,而是长度中的整数
$(".phoneNo").each(...
$(pCount)。每个都不是有效的选择器,而是长度中的整数
$(".phoneNo").each(...
格维兹,隐藏和整齐的链子配合得很好。问题是浏览器未正确检测到正在创建新的.phoneNo div和/或未对其进行计数,从而导致a.delete此项仍处于隐藏状态:-(哦,你必须确保在你的逻辑中执行这个逻辑来创建/删除div。更新答案来显示这个。嗯…试图解决你的解决方案,但我有点困难。我想我正在慢慢走向解决方案。谢谢你的指针,gWhiz.gWiz,隐藏与整洁的链接配合得很好。问题是m表示浏览器未正确检测到正在创建新的.phoneNo div和/或未对其计数,这将导致a.delete此项保持隐藏状态:-(哦,你必须确保在你的逻辑中执行这个逻辑来创建/删除div。更新答案以显示这一点。嗯……试图解决你的解决方案,但我有点困难。我想我正在慢慢找到解决方案。谢谢你的指点,格维兹。