2010-09-29 51 views
0

我真的需要在js的帮助下删除一些块。是否有可能不隐藏某个区块,而是删除它?Javascript块删除

因为我有一个字段,那么用户将无法查看他是否在我的选择框中选择了“否”,但无论如何JQuery验证都会发送消息,指出此字段为空。

我有这样的:

 $(function() { 
      $("#wichonepmtofollow").hide(); 

      $("#particularpmselect").change(function() { 
       // find the selected one 
       var selectedCountry = $(this).val(); 

       if (selectedCountry == "yes") { 
        $("#wichonepmtofollow").show(); 
       } 
       // otherwise hide it 
       else { 
        $("#wichonepmtofollow").hide(); 
       } 
      }); 
     }); 

这:

<div id="wichonepmtofollow"> 
    <div class="section" id="inputdiv"> 
     <span class="fieldname">Which one?</span> 
     <input type="text" id="wichonepm" name="wichonepm" title="can't be empty" class="required" minlength="1"/> <!-- Nessesary to be filled--> 
      <script type="text/javascript"> 
       var wichonepm = new LiveValidation('wichonepm'); 
       wichonepm.add(Validate.Presence); 
      </script> 
    </div> 
    <div id="clear"></div> 
</div> 

像,而不是$( “#pleasespecify”)隐藏();做一些像$(“#pleasespecify”)。 删除();或者是其他东西?

+1

我想你还没有搜索['jquery remove'](https://encrypted.google.com/search?hl=en&q=jquery+remove)有吗? – 2010-09-29 11:50:56

+2

建议:删除LiveValidation并使用jQuery Validation插件(http://docs.jquery。com/Plugins/Validation),可以很容易地定义不验证隐藏字段的规则。 – Bergius 2010-09-29 11:54:21

回答

0

握住HTML临时的变量[根据用户的意见更新】 -

if (selectedCountry == "yes") { 
    $("#wichonepmtofollow").html(temHtml); 
} 
else { 
    temHtml = $("#wichonepmtofollow").html(); 
    $("#wichonepmtofollow").html(''); 
} 

在全球范围内宣布temHtml

var temHtml; 
+0

相同。它不应该如何应对。它删除我的块。但不返回!如果(selectedCountry ==“yes”){$(“#wichonepmtofollow”)。show(); } – FlashTrava 2010-09-29 11:56:51

+0

@FlashTrava检查更新的答案 – 2010-09-29 12:01:44

4
$("#pleasespecify").remove(); 

正确的是(docs here )。

或者,您可以清空父:

$("#wichonepmtofollow").empty(); 

编辑(由于OP评论):

你可以保持您已删除的对象,如:

var savedObj = $("#pleasespecify").remove(); 

然后您可以稍后添加它:

$("#wichonepmtofollow").append(savedObj); 

请注意,这也会解除绑定到关联的DOM元素的所有事件。为了保持所有事件的绑定,可以使用jQuery的detatch方法。

+0

不,它不工作。它删除我的块。但不返回!如果(selectedCountry ==“yes”){ $(“#wichonepmtofollow”)。show(); } – FlashTrava 2010-09-29 11:55:23

+0

@FlashTrava - 你能改正你的javascript和html中的id,或发布连接的部分吗? – sje397 2010-09-29 11:58:21

+1

所以你想破坏它,然后通过show()把它带回来?也许如果你将它作为变量存储并稍后追加...... – Hannes 2010-09-29 11:59:44

0

要存储在临时variiable HTML,然后从页面删除:

var tempHtml;//declare tempHtml outside other script code so it's available later 

然后,而不是$("#wichonepmtofollow").hide();使用本:

tempHtml = $("#wichonepmtofollow").html(); 
$("#wichonepmtofollow").html(''); //empty the container 

要恢复的HTML后:

$("#wichonepmtofollow").html(tempHtml); 
0

有没有必要销毁任何东西,只是启用或禁用它,它不会被验证,如果我t的隐藏:

$(function() { 
     $("#wichonepmtofollow").hide(); 
     $('#wichonepm').attr('disabled',true); 

     $("#particularpmselect").change(function() { 
      // find the selected one 
      var selectedCountry = $(this).val(); 

      if (selectedCountry == "yes") { 
       $("#wichonepmtofollow").show(); 
       $('#wichonepm').attr('disabled',false); 
      } 
      // otherwise hide it 
      else { 
       $("#wichonepmtofollow").hide(); 
       $('#wichonepm').attr('disabled',true); 
      } 
     }); 
    });