为什么这个jQuery脚本不能工作?

为什么这个jQuery脚本不能工作?,jquery,Jquery,我无法使脚本中的if语句正常工作 详细信息:我正在使用SharePoint,它呈现一个下拉框w/attribute title=requestType。当requestType框没有设置为初始值时,也就是说,我希望出现一个类为reqDet的控件 无论如何,谢谢大家。以下是对我有效的解决方案: <script type="text/javascript"> $(document).ready(function(){ $("tr.reqDet").hide(); $("[ti

我无法使脚本中的if语句正常工作

详细信息:我正在使用SharePoint,它呈现一个下拉框w/attribute title=requestType。当requestType框没有设置为初始值时,也就是说,我希望出现一个类为reqDet的控件

无论如何,谢谢大家。以下是对我有效的解决方案:

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

  $("[title='requestType']").change(function(){
    if ($("[title='requestType']").val()!=""){
        $("#reqDet").hide();
    } else {  
        $("#reqDet").show();  
    }
  });

</script>
更新的答案:由于您提到了带有类reqDet的元素,问题在于您使用的是id选择器reqDet,而不是类选择器.reqDet

此外,除此之外,您还可以对代码进行一些改进:

使选择器更加明确,这样它就不必检查页面中的每个元素 在回调中利用这一点,这样就不必再次遍历DOM 使用而不是隐藏和显示,使您能够丢失if 因此,您可以将其简化为:

$(document).ready(function(){ $("tr.reqDet").hide(); $("select[title='requestType']").change(function(){ if ($("[title='requestType']").val()!=""){ $("#reqDet").hide(); } else { $("#reqDet").show(); } });
在为更改事件添加侦听器之前,您是否有意隐藏带有classname reqDet的tr,然后稍后尝试隐藏id为reqDet的元素?您还应该指定哪种类型的元素具有请求类型的标题:

$(document.ready(function() {
    var details = $('tr#reqDet');
    var dropdown = $("select[title='requestType']");
    details.hide();

    dropdown.change(function() {
        details.toggle(dropdown.val() === '');
    });
});

我认为if语句工作正常,但是它里面的选择器是错误的。正如您所提到的,要显示/隐藏的控件具有类reqDet,请使用类选择器。试试这个

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

  $("select[title='requestType']").change(function(){
    if ($(this).val()!=""){
        $(".reqDet").hide();// should this be a class or id of reqDet 
    } else {  
        $(".reqDet").show();  // Change to "." to select class. # is selecting id so it isn't finding it. 
    }
  });

</script>

无法让它工作到底有多准确?您能显示标记吗?具有requestType标题的下拉框是什么类型的元素?您是否使用Firebug查看有多少元素与您的$[title='requestType']选择器匹配?如果是这样,您可能希望将该代码更改为$this.val!=而不是$[title='requestType'].val=请也包括html代码。@jg100309-问题在于您用于显示/隐藏选择器的reqDet选择器。您应该使用.reqDet,因为它是应用于您正在尝试显示/隐藏的控件上的类。我发现toggle不起作用,因为请求类型有四个选项,四个选项中的三个应该显示.reqDet窗格。@jg100309:如果您在参数内调整表达式,toggle将正常工作。但是如果你不把特定的信息作为问题的一部分,这真的很难帮助你。我有$select[title='requestType'].changefunction{$.reqDet.toggle$this.val!=;//if$this.val!={/$.reqDet.show;//}else{/$.reqDet.hide;//;}$选择[title='requestType'].changefunction{$.reqDet.toggle$this.val!==;@jg100309:注释中的代码不可能有意义。是的,在用户输入请求类型之前,将隐藏详细信息行。四个选项,其中三个选项应显示.reqDetails
$(document.ready(function() {
    var details = $('tr#reqDet');
    var dropdown = $("select[title='requestType']");
    details.hide();

    dropdown.change(function() {
        details.toggle(dropdown.val() === '');
    });
});
<script type="text/javascript">
$(document).ready(function(){
  $("tr.reqDet").hide(); 

  $("select[title='requestType']").change(function(){
    if ($(this).val()!=""){
        $(".reqDet").hide();// should this be a class or id of reqDet 
    } else {  
        $(".reqDet").show();  // Change to "." to select class. # is selecting id so it isn't finding it. 
    }
  });

</script>
$(document).ready(function(){
   $("tr.reqDet").hide(); 

   $("[title='requestType']").change(function(){
      if ($(this).val()){
          $(".reqDet").hide();
      } else {  
          $(".reqDet").show();  
      }
   });
});