无法更改链接单击时的 div 内容

Posted

技术标签:

【中文标题】无法更改链接单击时的 div 内容【英文标题】:not able to change div content on link click 【发布时间】:2015-12-02 04:08:17 【问题描述】:

好吧,我现在正在做的只是尝试使用这个小提琴中的一个简单代码:http://jsfiddle.net/unbornink/LUKGt/ 来更改点击链接时的 div 内容,只是为了检查它是否适用于我的网站。但它没有。它显示所有三个 div 一直,无论点击哪个链接

   <asp:Content ID="Content2" ContentPlaceHolderID="head" runat="Server">
<style>
    .linkdetails 
        width: 180px;
        color: #FFF;
        padding: 20px;
    

    .detailscontainer 
        width: 220px;
        height: 100%;
        display: block;
        float: right;
        background-color: #111;
        z-index: 2;
        position: absolute;
        border-right: #222 1px solid;
        color: #FFF;
        top: 0px;
        right: 0px;
    
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    $('.linkdetails').hide();

    $('.link').click(function () 
        $('.linkdetails').hide();
        $('.linkdetails[data-link=' + $(this).data('link') + ']').fadeIn(
            width: '200px'
        , 300);
    );
</script>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

<a class="link" data-link="first" href="#">link 1</a>
<a class="link" data-link="second" href="#">link 2</a>
<a class="link" data-link="third" href="#">link 3</a>

<div class="detailscontainer">
    <div class="linkdetails" data-link="first">content 1</div>
    <div class="linkdetails" data-link="second">content 2</div>
    <div class="linkdetails" data-link="third">content 3</div>
</div>
</asp:Content>

是因为我的母版页吗?或者我做错了什么?在上面的小提琴中工作得很好。

【问题讨论】:

问题是您试图在将 div 加载到 DOM 之前使用 jquery 隐藏它们,在 document.ready 中编写 JQuery 代码或仅在 div 之后编写脚本内容 它非常适合我 【参考方案1】:

在里面插入你的 jQuery 代码:

$(document).ready(function()
    //here
);

像这样:

$(document).ready(function()
    $('.linkdetails').hide();

    $('.link').click(function () 
    $('.linkdetails').hide();
    $('.linkdetails[data-link=' + $(this).data('link') + ']').fadeIn(
        width: '200px'
    , 300);
);
);

【讨论】:

【参考方案2】:

正要和@J Santosh 说同样的话,脚本执行时标签还没有准备好。确保在脚本中添加准备好的文档,如下所示:

<script type="text/javascript">
$(document).ready(function() 
    $('.linkdetails').hide();

    $('.link').click(function () 
        $('.linkdetails').hide();
        $('.linkdetails[data-link=' + $(this).data('link') + ']').fadeIn(
            width: '200px'
        , 300);
    );
);
</script>

【讨论】:

【参考方案3】:

问题是@Jackie 所描述的。执行一次完成。如果您从 Javascript 访问 DOM,则必须确保您的代码在浏览器添加相关 DOM 元素后运行。

这只是我的意见,但我尽量避免使用 $(document).ready。相反,我在底部添加了我的 Javascript 代码。使用 document.ready 会增加额外的延迟,这在大多数情况下是不值得的。

您的 html/Javascript 代码如下所示:

<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">

  <a class="link" data-link="first" href="#">link 1</a>
  <a class="link" data-link="second" href="#">link 2</a>
  <a class="link" data-link="third" href="#">link 3</a>

  <div class="detailscontainer">
    <div class="linkdetails" data-link="first">content 1</div>
    <div class="linkdetails" data-link="second">content 2</div>
    <div class="linkdetails" data-link="third">content 3</div>
  </div>

  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script type="text/javascript">
    $('.linkdetails').hide();

    $('.link').click(function() 
      $('.linkdetails').hide();
      $('.linkdetails[data-link=' + $(this).data('link') + ']').fadeIn(
        width: '200px'
      , 300);
    );
  </script>

</asp:Content>

【讨论】:

以上是关于无法更改链接单击时的 div 内容的主要内容,如果未能解决你的问题,请参考以下文章

单击链接时如何使用 Javascript 更改部分 HTML?

使用 jquery 更改具有嵌套内容的 div 的可见性,onclick

无线电隐藏。改为显示 div 类。单击 div 选择链接的收音机

通过单击链接通过 JavaScript 打开 Bootstrap 4 Modal

根据 $_GET 值更改 div 内容

单击以在 div 中显示数据时尝试获取链接?