2011-01-27 20 views
0

divのonClickへのハイパーリンクを追加しようとしていましたが、再度クリッキングすると、追加されたハイパーリンクが削除されました...すべてがうまく機能していますonClickハイパーリンクは目的のdivに追加されますが、削除されていません...jquery .remove not working

<script type="text/javascript"> 
    $(document).ready(function() { 

     $("[href=#]").click(function() { 
      if ($("#appendContainer").is(":parent")) { 
       var child = $("#appendContainer").children().attr("id"); 
       alert(child); 
       $('#' + child).remove(); 

      } 

      $("#appendContainer").append(
$("<a/>", { href: "#", id: "helloWorldLink" }).text("Helloworld")); 
     }); 
    }); 

</script> 




    <a href="#">click here</a> 
     <div id="appendContainer"></div> 

答えて

0

あなたの追加したリンクにはあなたのonClickリスナーがありません。

.live()を使用してイベントハンドラを設定してみます。

$(document).ready(function() { 
     $("[href=#]").live('click', function() { 
      if ($("#appendContainer").is(":parent")) { 
       var child = $("#appendContainer").children().attr("id"); 
       alert(child); 
       $('#' + child).detach(); 
       return; 
      } 

      $("#appendContainer").append(
       $("<a/>", { href: "#", id: "helloWorldLink" }).text("Helloworld") 
      ); 
     }); 
}); 

注、私はちょうど古いものを削除した後に新しいリンクを追加することを避けるためにdetach()returnを追加したもの:このコードを使用します。

1

アンカーリンクは、すでに存在する場合は削除していますが、常に追加しています。後にelseブロックを追加する必要があります。 (

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("[href=#]").click(function() { 
      if ($("#appendContainer").is(":parent")) { 
       var child = $("#appendContainer").children().attr("id"); 
       alert(child); 
       $('#' + child).remove(); 

      } 
      else { 
      $("#appendContainer").append($("<a/>", { href: "#", id: "helloWorldLink" }).text("Helloworld")); 
      } 
     }); 
    }); </script> 
+0

それだけではありません。新しいはonClickハンドラを取得しません。 – Olegas

+0

tnx alot ...... – Rafay

+1

@Olegas:私はOPがリンクをクリックしていると言います。その場合、リンクは一度クリックするだけで非表示にすることができます。それが隠されると、それを見えるようにする方法はありません。 – Chandu

1

$(function() { 
    function linkClickHandler() { 
    var appendContainer = $('#appendContainer'); 
    appendContainer.children().remove(); 
    appendContainer.append(
     $('<a/>', { 
      href: '#', 
      id: 'helloWorldLink', 
      click: linkClickHandler, 
      text: 'HelloWorld' 
     }) 
    ); 

    $('[href=#]').click(linkClickHandler); 
    } 
} 

また、ライブを使用してください(ただし、この場合は遅くなります)。