0

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

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

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

4

4 回答 4

2

好吧,你可以做 3 件事。

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

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>');
}
于 2012-10-03T03:50:04.087 回答
2

为其添加条件

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>');
}
于 2012-10-03T03:55:21.080 回答
0

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

于 2012-10-03T03:48:24.053 回答
0
$("#frmUrl:not(:has(.icoSpan))").addClass("hideUrl").css("margin","0").append('&nbsp;<span class="uico ui-icon-carat-1-w icoSpan"></span>');
于 2012-10-03T03:53:26.147 回答