【问题标题】:How to JQuery DIV toggle more dynamic?如何让 JQuery DIV 切换更动态?
【发布时间】:2009-01-20 05:12:29
【问题描述】:

如何使下面的函数更加动态,例如commentLink 和commentContainer 后面会有一个ID,像这样commentLink-2289 commentContainer-2289 因为会有多个列表中的。

Javascript

$(function() {
    $("#commentLink").click(function() 
   {
        $("#commentContainer").toggle();
        if ($("#commentContainer").is(":visible")) 
        {
            $("#commentContainer").load($(this).attr("href"));
        } else 
        {
             $("#commentContainer").html("Loading..."); //Or just leave it as is...
        }
        return false; //Prevent default action
   });
});

HTML

<div id="SystemNews">
 <ul id="dc_news">
   <li>
     <a href="/Home/SystemNews/69" id="commentLink-0">Comments</a>
     <div id='commentContainer-0' style="display:none;">    Loading...</div>
   </div>
   </li>
   </ul> 
</div>

注意:请提供一个工作示例,我通过示例学习最好,谢谢

【问题讨论】:

  • 你到底为什么要把这个问题作为一个新问题打开?这完全违背了 Stack Overflow 的目的。
  • 因为我在问一个问题......我需要知道我哪里出错了?
  • 对,但是使用问题/答案的堆栈溢出格式,而不是问题,问题,问题。它完全违背了该站点的目的,并使其他用户更难使用。您的答案发布在下面,没有错误。

标签: jquery asp.net-mvc


【解决方案1】:

试试这个:

jQuery(function($){ 
  $("a[id^='commentLink-']").click(function(){
    match = this.id.match(/commentLink-(\d+)/);
    container = $("div#commentContainer-"+match[1])
    container.toggle();
    if (container.is(":visible")) {
        container.load($(this).attr("href"));
    } else {
        container.html("Loading...");
    }
    return false; //Prevent default action
  });
});

但是,如果您可以发布 html 或指向 html 的链接,这会有所帮助,这样我们就可以看到您正在使用的格式是什么。 我不知道你得到的错误是来自我的代码还是你的(因为我的代码只是你的一个模型)。脚本中的错误在哪一行?


编辑我的原始代码在 this.id.match 行有一个错误,上面已修复,现在试试吧。


编辑: 此外,在您提供的 HTML 中还有一个额外的结束 &lt;/div&gt;,不确定这是否是拼写错误,但应该将其删除。

点击事件应该被包裹在 $(document).ready(function(){ ... });以便 jquery 可以准确地访问 dom(因为您正在查询 &lt;a&gt;&lt;div&gt; 元素)。我遇到了一个问题,最后一个return false; 没有到达,我怀疑它与 is(:visible) 代码有关。 if/else 块的预期功能是什么?

【讨论】:

  • Ack,您能否尝试逐步完善您的答案,多个答案通常会令人困惑。我真的很想编辑你的答案,这样我们就不需要通过到处复制粘贴示例代码来意识到之前的问题,但我会留给你去做。
  • 肯特,你的意思是我需要逐步完善,还是dswatik?他之前问过这个问题,然后用我在上一个问题中提出的答案将它移到了这个问题上。我一直在努力为他找到最好的答案。如果我做事不当,我向你道歉。感谢您清理。 :)
  • 我在这里说的是3个答案,都是你的,2个是你发的,1个是他发的。这对我来说毫无意义,我认为对于那些没有看到上一个问题的人来说,一个有凝聚力的答案会更好。
  • 我 100% 同意,因为我不确定他是否正在阅读它们,所以我犹豫是否将后续 cmets 发布为 cmets。我会很感激编辑/组织,我肯定会在后续问题上做得更好。谢谢!
  • 我已经清理了一下,看看结果,确保你对它感到满意,因为我不想说这些 for 你,所以你需要同意我的改变;)
猜你喜欢
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多