用jQuery追加一次

时间:2012-10-03 03:45:17

标签: jquery

我有一个函数,我将一个元素附加到另一个元素:

$("#frmUrl").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan"></span>');

当然,当我再次调用相同的函数时,会附加另一个函数。如何重写此字符串以仅将此跨度附加到一个?

4 个答案:

答案 0 :(得分:2)

你可以做三件事。

一种是在追加然后检查后创建一个标志

var isExist = false;

$("#frmUrl").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan"></span>');

isExist = true;

if(!isExist){
$("#frmUrl").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan"></span>');
}

第二个是检查目标DOM上是否已存在DOM

var dom =  $("#frmUrl").html();

if(dom.indexOf('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan\"></span>') == -1){
 $("#frmUrl").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan"></span>');
}

第三个是通过检查目标元素在目标元素上的存在来检查元素是否已存在

var dom = $("#frmUrl").find('.uico').length;

if(dom == 0){
     $("#frmUrl").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan"></span>');
}

答案 1 :(得分:1)

为其添加条件

if(! $('#frmUrl').find('span.uico').length > 1){
   $("#frmUrl").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-   
    carat-1-w icoSpan"></span>');
}

答案 2 :(得分:0)

您可以设置标志变量。最初将其设置为false,然后在执行追加之前检查值。如果为false,则继续追加并将其设置为true。否则,根据您的代码,您可以使用jQuery的.one()函数仅执行一次事件。

答案 3 :(得分:0)

$("#frmUrl:not(:has(.icoSpan))").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan"></span>');