jQuery切换div在单击JavaScript do_回发链接时展开

jQuery切换div在单击JavaScript do_回发链接时展开,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我正在一个新网站上工作,我正在使用jQuery创建一个功能列表,在单击时展开一个div,并在再次单击时关闭该div <script type="text/javascript"> $(document).ready(function() { //hide the all of the element with class msg_body $(".msg_body").hide(); //toggle the componenet with class msg_body

我正在一个新网站上工作,我正在使用jQuery创建一个功能列表,在单击时展开一个div,并在再次单击时关闭该div

<script type="text/javascript">
$(document).ready(function()
{
  //hide the all of the element with class msg_body
  $(".msg_body").hide();
  //toggle the componenet with class msg_body
  $(".msg_head").click(function()
  {
    $(this).toggleClass("msg_head2").next(".msg_body").slideToggle(100);
  });
});
</script>



<div class="msg_list">
    <p class="msg_head">They Forgot The Buttons</p>
    <div class="msg_body"><p>
    Just kidding. The MXT has nifty touchscreen controls so you never have to worry about buttons getting dirty or broken. 
    </p></div>
    </div>

$(文档).ready(函数()
{
//使用类msg_body隐藏所有元素
$(“.msg_body”).hide();
//使用类msg_body切换组件网
$(“.msg_head”)。单击(函数()
{
$(this).toggleClass(“msg_head2”).next(“msg_body”).slideToggle(100);
});
});
他们忘记带按钮了

只是开玩笑。MXT具有漂亮的触摸屏控制,因此您无需担心按钮变脏或损坏。

它工作得很好,但是,我还有一个产品评论链接,它使用JavaScript do_PostBack函数来扩展评论面板

<a href="javascript:__doPostBack('ctl00$wpm$ShowProduct$ctl07$ReviewLink','')">Review and Rate this item</a>

单击review链接时,会导致所有jQuery div展开

当我将enablepartialrendering设置为false并“修复”问题时,但当单击查看链接时,它会将用户带到页面顶部并展开查看面板,而不仅仅是展开查看面板并将用户保持在正确位置

我希望我解释得足够好;我对jQuery、JavaScript和AJAX非常陌生

问候,, 沙拉

编辑:

我想我真的没有问一个问题所以

我可以做些什么更改,使审阅链接扩展审阅面板,并让用户留在该区域,而不必扩展jQuery的每个div


这里有一个产品页面的链接:

好的,我想我知道发生了什么。加载页面时,执行以下代码:

$(document).ready(function(){
  //hide the all of the element with class msg_body
  $(".msg_body").hide();

  //toggle the componenet with class msg_body
  $(".msg_head").click(function()  {
    $(this).toggleClass("msg_head2").next(".msg_body").slideToggle(100);
  });
});
现在,当.net进行回发时,它正在重新创建那些.msg_body和.msg_head元素。最好的解决方案是让.net不要取代它们(除非您需要它们)

如果你需要重新绘制,你可以做两件事。首先,将.msg_body设置为在css中隐藏,默认情况下它们是隐藏的。然后,要处理单击问题,请将单击代码替换为:

  $(".msg_head").live("click", function()  {
    $(this).toggleClass("msg_head2").next(".msg_body").slideToggle(100);
  });

这将导致单击处理程序仍然适用于新添加的.msg_head项。

好的,我想我知道发生了什么。加载页面时,执行以下代码:

$(document).ready(function(){
  //hide the all of the element with class msg_body
  $(".msg_body").hide();

  //toggle the componenet with class msg_body
  $(".msg_head").click(function()  {
    $(this).toggleClass("msg_head2").next(".msg_body").slideToggle(100);
  });
});
现在,当.net进行回发时,它正在重新创建那些.msg_body和.msg_head元素。最好的解决方案是让.net不要取代它们(除非您需要它们)

如果你需要重新绘制,你可以做两件事。首先,将.msg_body设置为在css中隐藏,默认情况下它们是隐藏的。然后,要处理单击问题,请将单击代码替换为:

  $(".msg_head").live("click", function()  {
    $(this).toggleClass("msg_head2").next(".msg_body").slideToggle(100);
  });


这将导致单击处理程序仍然适用于新添加的.msg_head项。

看起来您有嵌套的UpdatePanel。尝试将父面板的设置为有条件,以防止子updatepanel触发父updatepanel。

看起来您有嵌套的updatepanel。尝试将父面板的设置为“有条件的”,以防止子updatepanel触发父updatepanel。

我认为u doPostBack是一个.net的东西,可能应该在问题的标记中包含它。有没有一个页面可以访问,我们可以看到发生了什么?嗨,金吉夫,谢谢你的标签建议。该网站正在使用ASP.net和AJAX。以下是一个产品页面,该页面存在以下问题:。现在我用enablepartialrendering=“true”设置了它,因此当单击“查看并评估此项目”链接时,div将展开。这是否包装在updatepanel中?如果是这样,我会检查更新面板是否也返回了会替换div内容的扩展项,从而破坏了您的代码…@Shala您是否尝试过更改:
$(“.msg_head”)。单击(function()
$(“.msg_head”)。绑定('click',function()
),或者甚至在评论中添加一个函数,如
$('a.review')。live('click',函数(prev){prev.preventDefault();})
…或者类似的东西。我认为uu doPostBack是一个.net的东西,可能应该包含在问题的标签中。是否有一个可以访问的页面,我们可以看到发生了什么?嗨,kingjiv,谢谢你的标签建议。该网站使用ASP.net和AJAX。这是一个有问题的产品页面:。现在我有它使用enablepartialrendering=“true”进行设置,因此当单击“查看并评估此项目”链接时,div将展开。这是否包装在updatepanel中?如果是,请检查更新面板是否也返回会替换div内容的扩展项,从而破坏您的代码…@Shala您是否尝试过更改:
$(“.msg_head”)。单击(function()
$(“.msg_head”)。绑定('click',function()
?甚至向审阅添加一个函数,如
$('a.review')。live('click',function(prev){prev.preventDefault();})
…或类似的东西。工作起来很有魅力。你真的知道你很了不起!非常感谢你花时间看一看并提供答案。工作起来很有魅力。你真的很了不起!非常感谢你花时间看一看并提供答案。看起来金吉夫的答案解决了这个问题。我确实想感谢您抽出时间回答我的问题!不客气。不过请注意:重新呈现父updatepanel的内容可能会影响性能。正如kingjiv在回答中提到的,如果您首先使用我的方法消除不必要的HTML,可能会是最好的。好的,我一定会看一看在你提供的链接上尝试一下。我很犹豫是否这样做,因为我对这一点非常陌生,担心我们的网站可能会付之一炬。再次感谢你。好的,我进去后发现UpdatePanel将其更改为有条件的,现在一切都很好。再次感谢你的回答,感谢你解释为什么这是最好的答案,并提供一个指向我需要的信息。非常感谢