是這樣的,最近做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) { $("<input type='radio' id='rad4'> <span>选择按钮4</span>").appendTo($("#radioContainer")); } } ) } )