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