是这样的,最近做jquery训练时遇到jquery判断元素是否存在时出现问题.
题目如下:请在选择按钮3后面,添加id=rad4,处于选择状态的,之后文字为选择按钮4的html控件,只能添加一次(自由选择使用js原生或jquery实现
function addradio() { if (!document.getelementbyid(rad4)) { var main = document.getelementbyid(radiocontainer); var input = document.createelement(input); input.setattribute(type, radio); input.setattribute(id, rad4); var span = document.createelement(span); var txt = document.createtextnode(选择按钮4); span.appendchild(txt); main.appendchild(input); main.appendchild(span); } }
判断对象是否存在这样就够了。if (!document.getelementbyid(rad4))但是jquery中 if (!$(#rad4))却是永假的的 楼楼以为 跟javascript一样事实并非如此
在jquery中。一旦被$()包装器 包装起来 就是一个对象 不是null或未定义 所以!$(#rad4)
永远是false 。正确做法如下
包装器中如果没有对象那么长度就为0;只需要这样就ok了
$(function () { $(.domtree div:eq(6) input:eq(1)).click(function () { if ($(#rad4).length < 1) { $( 选择按钮4).appendto($(#radiocontainer)); } } ) } )