2012-09-21 71 views
0

我有几个问题,因为我是新来的ASP.NetjQuery来显示可见DIV

  1. 我已成立了如下一个aspx页面;

    无序列表区域 隐藏的div 隐藏的div

的无序列表的代码:

<div class="literaltext"> 
     <p> We utilize two types of systems for mixing EnerBurn&reg; with your fuel supply to deliver it to your diesel engine,<br /> On-Board systems and Bulk Fueling systems. Click on an item below for more information.</p> 
     <ul class="ulGreen"> 
      <li><b>On-Board systems - Road Vehicle</b><span style="color:black;"> (See an installation picture<a href="#" onclick="picDisplay('onBoardVehiclepicdisplay')">here</a>)</span> </li> 
      <li><b>On-Board systems - Marine Vessel</b><span style="color:black;"> (See an installation picture<a href="#" onclick="picDisplay('onBoardVesselpicdisplay')">here</a>)</span> </li> 
      <li><b>On-Board systems - Fueling Barge</b><span style="color:black;"> (See an installation picture<a href="#" onclick="picDisplay('onBoardBargepicdisplay')">here</a>)</span> </li> 

     </ul> 
    </div> 

隐藏的div设置了像这样;(仅示出2的3为了简洁)

<div id="onBoardVehiclepicdisplay" class="invisible"> 
     <fieldset class="dynamicinjectionpics"> 
      <legend>"Schlumberger On-Board Injection Unit"</legend> 
      <img Height="300px" Width="400px" alt="" 
      src="Images/InjectionUnitPictures/SchlumbergerInjectionUnit_FrackTruck.jpg"/>&nbsp;&nbsp;&nbsp; 
      <img Height="300px" Width="400px" alt="" 
      src="Images/InjectionUnitPictures/SchlumbergerInjectionUnit_FrackTruck_withEnclosure.jpg"/> 
      <br /><span id="Image1Text" runat="server">Typical injection unit installation (shown here on a Fracking Unit)</span> 

     </fieldset> 
    </div> 
    <div id="onBoardVesselpicdisplay" class="invisible"> 
     <fieldset class="dynamicinjectionpics"> 
      <legend>"Vessel Fuel Intake Line Mounted Injection System"</legend> 
      <img Height="300px" Width="400px" alt="" 
      src="Images/InjectionUnitPictures/SP-600 Injector.jpg"/>&nbsp;&nbsp;&nbsp; 
      <img Height="300px" Width="400px" alt="" 
      src="Images/InjectionUnitPictures/MarionInjector Installation.JPG"/> 
      <br /><span id="Span1" runat="server">Typical injection unit installation for single vessel</span> 

     </fieldset> 
    </div> 

我想使用JQuery来改变分类使用指定的onclick函数单击锚点标记时,隐藏的div将显示为可见。这是做这件事的最好方法吗?我应该在隐藏的divs附近有更新面板吗?我使用的第一种方法是调用一个页面重新加载,其中我为所选标记的图片注入了innerHTML,但它可以工作,但我认为这是一种业余和较低效的方式来完成此操作。

这个查询没有工作(不能让picDisplay功能识别,所以我硬编码的一个参数的DIV ID的尝试得到它的工作)

<script> 
    $(function() { 
     function picDisplay(divId) { 
      $("[id='onBoardVehiclepicdisplay']").toggleClass('visible'); 

     } 
    }); 

</script> 
+0

要选择一个元素的'id',你可以简单地使用一个'#',后面跟着''id'作为选择器。因此,不要使用'$(“[id ='onBoardVehiclepicdisplay']”)',请执行$(“#onBoardVehiclepicdisplay”)。 – spinningarrow

+0

JQuery有一个内置的'toggle'功能。 http://docs.jquery.com/Effects/toggle – 5arx

回答

1

这里就是我想要做的:

一个数据相对标签添加到每一个环节,它指的是有关隐藏的div:

<a href="#" data-rel="onBoardVehiclepicdisplay">here</a> 

使用下面的jQuery:

$('.ulGreen').delegate('li a', 'click', function(e){ 
    e.preventDefault(); 
    var target = $(this).attr('data-rel'); 
    $('#' + target).toggleClass('invisible'); // or show()/hide() 
}); 

编辑 - 错过了来自toggleclass目标的'#'。这里的工作示例:http://jsfiddle.net/aF5Pg/

+1

作为一个方面说明,在这种情况下,您可以使用$(this).data('rel')。 –

+0

我喜欢你的方法,但它不起作用 – dinotom

+0

什么不工作?它是显示/隐藏部分?你有我们可以看到的演示吗? – MassivePenguin

0

试试这个:

$('#onBoardVehiclepicdisplay').toggleClass('visible'); 

您应该阅读:id selector

您也应更换onclick属性(不推荐)与:

<li><a href="#onBoardVehiclepicdisplay">...</a> 
$('li > a').click(function (event) { 
    event.preventDefault(); //to block the link 

    var id = $(this).attr('href'); 
    $(id).toggleClass('visible'); 
}); 
+0

所以我必须给锚标记一个ID?引用点击功能? – dinotom

+0

我不确定要理解。要引用点击,请使用选择器像id(#myId),类(.myClass)或元素(a)一样引用您的html元素(现在具有onclick属性)。 jQuery选择器看起来像CSS选择器。 –

+0

编辑:我没有看到你的第一个代码与无序列表,我会更新我的答案。 –

0

其实有两种简单的方法做到这一点:

  1. 使用的.css()
  2. 使用.toggleClass()或.hasClass(),.removeClass()和.addClass()

我认为是最简单的使用的CSS()

你必须:

function toggleVisible() { 
    if($(this).css("display") == "none") 
     $(this).css("display", "block"); 
    else 
     $(this).css("display", "none"); 
} 
+0

太复杂。你可以使用.fadeToggle()函数实现这一点。 – JanHocevar

+0

.fadeToggle()将使用不透明度,并循环。 Css显示切换将耗电更少。 –

+0

没有最好的方法来做到这一点,但有几个是正确的。你也可以使用它:http://api.jquery.com/toggle/ –

0
  1. 不,你并不需要一个更新面板来实现你想要什么去做。

  2. 其次,我们需要更多关于您的场景的信息以获得最佳效果。按钮的位置在哪里,并且是否会有一个按钮分配给您试图使其可见的每个按钮?

<div id="onBoardVesselpicdisplay"> 
</div> 

<input id="onBoardButton" /> 

是:

$('#onBoardButton').on('click', function() { 
    $('#onBoardVesselpicdisplay').toggleClass('visible'); 
}); 

如果你的情况是复杂多了,那么请你解释你想做什么。

+0

thedixon ...没有按钮,在无序列表中有一个锚标签。当点击“here”时,我想让JQuery做div类更改 – dinotom

+0

哦,好吧,您可以使用与上述相同的代码,因为它基于元素ID,无论元素是什么标签。所以,将是你的一个ID的链接,而不是一个按钮。 –

0

asp.net,据我所知会根据组件ID生成随机客户端ID。所以你可以在Jquery上使用contain selector

为您的代码,只需修改于:

<script> 
    $(function() { 
     function picDisplay(divId) { 
      $("[id*='onBoardVehiclepicdisplay']").toggleClass('visible'); 

     } 
    }); 

</script> 

你也可以使用操纵或end with selectorstart with selector

0

Here's another way of doing it。它利用了可以将多个类添加到HTML元素的事实。首先隐藏所有'隐藏'的div,然后点击找到需要显示并显示的div。我认为一个更现代的做法是使用data-rel属性(但我在工作中,并且忙于查找它 - 我还没有完全采用它)

divs全部隐藏负载:

$(document).ready(function() { 
    //Hide all of them initially 
    $('.toHide').hide(); 
}); 

在里面锚的点击的LI的div来显示的类名装配和JQuery.show()来取消隐藏它。

$('LI A').click(function() { 
    $('.toHide').hide(); //hide all the divs first 
    $('.div-' + ($(this).attr('class'))).show(); //reveal the one you want. 
}); 
+0

在小提琴中非常有用。对于这两个类名称“toHide”和“div-001,2,3 etc”,没有css,当我刷新页面时,它显示所有div,而不点击锚标签 – dinotom

+0

toHide div由JS代码隐藏。你当然可以使用CSS来设计它们,但是当JQuery处理它们时,不需要直接使用CSS来显示/隐藏它们。如果你是在一个页面上而不是在一个小提琴上做的,你需要包含JQuery脚本,并确保你在onload函数中隐藏了toHide div – 5arx