0

我有一个由 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();
   }

});
4

1 回答 1

1

您的代码不起作用,因为每个(!)调用.after()都会创建一个完整的标签,因此第一个标签<p>将与其结束标签一起创建,甚至在您调用.after('</p>').

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

var newHTML = '<p><textarea name="ddOptions'+id+'" id="ddOptions'+id+'" rows="4" cols="40"></p>';
$(this).after(newHTML);
于 2012-10-30T08:04:50.367 回答