如何通过jquery删除与live元素关联的子元素(单选按钮及其相关文本)

时间:2012-10-30 07:27:16

标签: jquery hide element live show

我有一个由jquery创建的选择框,其类为'classTypex'。

我想使用此函数显示/隐藏其子元素,但它不能隐藏元素..

根据下面的代码,我附加一个textarea和3个单选按钮..使用其他部分的代码我能够隐藏textaraea而不是单选按钮..请帮助

// To display radio button selections for DD typex
$(".classTypex").live("change", function () {
   var id = $(this).attr("id").split("colTypex").join(""); 
   var opt = $("#colTypex" + id + " option:selected").val(); 

   if(opt == 'DD') {

       // append a text area for none selection
       $(this).after('<p>');
       $(this).after('<textarea name="ddOptions'+id+'" id="ddOptions'+id+'" rows="4" cols="40">');
       $(this).after('</p>');

       // append radio buttons here
       $(this).after('<p id="preTag'+id+'">');
       $(this).after('Set Users as options');
       $(this).after('<input type="radio" class="columnTypex" id="radioDD'+id+'" name="radioDD'+id+'" value="befree_user" />');
       $(this).after('Set Entities as options');
       $(this).after('<input type="radio" class="columnTypex" id="radioDD'+id+'" name="radioDD'+id+'" value="entity_data" />');
       $(this).after('None');
       $(this).after('<input type="radio" class="columnTypex" id="radioDD'+id+'" name="radioDD'+id+'" value="none" checked />');
       $(this).after('</p>');

   }
   else {
       $('#ddOptions'+id).hide();
       $('#preTag'+id).hide();
   }

});

1 个答案:

答案 0 :(得分:1)

您的代码不起作用,因为对.after()的每次(!)调用都会创建一个完整的代码,因此即使在您致电{{}}之前,第一个<p>也会与其结束标记一起创建{1}}。

您应首先创建完整的HTML字符串,然后附加它。

.after('</p>')