如何使用jQuery添加DOM元素?

时间:2008-12-27 22:33:58

标签: javascript jquery dom

我有一个功能,我目前正用它来显示隐藏的div.a_type

如何修改此代码,使其不会淡入隐藏的div, 我可以将新的div添加到DOM

jQuery(function(){   // Add Answer

    jQuery(".add_answer").click(function(){
      if(count >= "4"){
        alert('Only 4 Answers Allowed');
        }else{
      var count = $(this).attr("alt");
      count++;
      $(this).parents('div:first').find('.a_type_'+count+'').fadeIn();
      $(this).attr("alt", count);
    }

    }); 

});

好的,现在我已经解决了这个问题,我还有一个问题,

我有另一个功能,如果单击一个按钮,则删除插入的div。 现在它没有工作,额外的div没有加载到页面加载的dom。 我如何触发功能现在删除它们?

jQuery(function(){//隐藏答案

jQuery(".destroy_answer").click(function(){
  $(this).parents("div:first").fadeOut(function (){ $(this).remove() });
   var count = $(this).parents('div:first').parents('div:first').find('.add_answer').attr("alt");
   count--;
   $(this).parents('div:first').parents('div:first').find('.add_answer').attr("alt", count);

}); 

});

2 个答案:

答案 0 :(得分:10)

如何在最后一个div之后添加它。

$('.a_type:last').insertAfter('<div class="a_type">content</div>');

修改
您可以通过对somefile.php的AJAX调用获取信息,然后somefile应该在div中返回您想要的内容:

$.get('path/to/somefile.php', function(data){
 $('.a_type:last').insertAfter('<div class="a_type">' + data + '</div>');
});

Somefile.php应该是这样的:

<?php
 session_start();
 $sessiondata = $_SESSION['data'];
 echo "Whatever you type here will come inside the div bla bla $sessiondata";
?>

修改
好的,试试这个:

jQuery(function(){ // Add Answer

jQuery(".add_answer").click(function(){
  if(count >= "4"){
    alert('Only 4 Answers Allowed');
    }else{
  var count = $(this).attr("alt");
  count++;
  $('.a_type_'+count-1+'').insertAfter(' 
       Place content back here');
  $(this).attr("alt", count);
}

});

});

如果你仍然需要,只需混合使用AJAX。

答案 1 :(得分:2)

  

我有另一个功能,如果单击一个按钮,则删除插入的div。现在它没有工作,额外的div没有加载到页面加载的dom。我如何触发功能现在删除它们?

您有三种方法可以解决最近的问题。

  1. 您可以使用liveQuery,这是一个jQuery插件,可在添加时将事件处理程序重新应用于DOM元素。注意:此插件仅在您使用本机jQuery DOM附加/前置函数(append / prepend / after / before / insertBefore / insertAfter等)时才有效。

  2. 或者,您可以在添加新元素时手动重新应用处理程序...(不是最佳选项)

  3. 第三,在我看来,最好的选择是利用事件授权的强大力量。您所做的是将事件处理程序附加到任何父级,例如,如果您要将列表项动态添加到无序列表,而不是不断地将事件处理程序重新应用于每个添加的项,您只需附加事件处理程序到父母,然后找到事件的目标:

    $('ul').click(function(e){
        var target = e ? e.target : window.event.srcElement;
        if(target.nodeName.toLowerCase() === 'li') {
            // Do Stuff...
        }
    })