【问题标题】:Loading a hidden div into an AJAX jQuery UI tab (future DOM element)将隐藏的 div 加载到 AJAX jQuery UI 选项卡(未来的 DOM 元素)
【发布时间】:2012-05-02 08:30:20
【问题描述】:

我一直在尝试操作通过 AJAX 加载到 jQuery UI 选项卡中的内容。 可以想象,这些元素是“未来”的 DOM 元素,不会被普通的 $(".someClass") 函数操作。

我读过使用 .live() 进行事件处理现在已弃用使用 jQuery 1.7+,并被新的 .on() 方法取代。

我的问题是我想隐藏的 div,当它在 AJAX 选项卡中加载时,必须在初始 DOM 加载后进行操作,并且一开始没有绑定到点击事件。

我的函数,目前包含在 $() 中。

我认为对于使用点击处理程序的链接,我的语法是正确的,但我不确定在加载时“.hide()”我的“hiddenStory”div 的正确方法。

我也认为函数本身不应该被包装在一个整体的 $() 中?

任何帮助或建议将不胜感激。

$(function(){
    // this .hiddenStory div below is what I want to hide on AJAX load
    // need syntax and/or new methods for writing this function
$(".hiddenStory").hide();

   // this is a function that allows me to toggle a "read more/read less" area
   // on the "hiddenStory" div
$(".showMoreOrLess").on('click', (function() {
if (this.className.indexOf('clicked') != -1 ) {
    $(this).removeClass('clicked');
    $(this).prev().slideUp(500);
    $(this).html("Read More" + "<span class='moreUiIcon'></span>");
    }
    else {
    $(this).addClass('clicked');
    $(this).prev().slideDown(500);
    $(this).html("See Less" + "<span class='lessUiIcon'></span>");
    }       
}));
});

// prevents default link behavior 
// on BBQ history stated tab panes with    
// "showMoreOrLess" links
$('.showMoreOrLess').click(function (event) 
{ 
 event.preventDefault(); 
 // here you can also do all sort of things 
});
// /prevents default behavior on "showMoreOrLess" links  

【问题讨论】:

    标签: ajax jquery-ui dom tabs elements


    【解决方案1】:

    您能否通过 CSS 设置 display: none 并在您想要显示元素的内容时覆盖它?另一种选择,如果您必须这样做,则在填充元素的 AJAX 加载的回调中添加 `$(".hiddenStory").hide()。例如:

    $(".hiddenStory").load("http://myurl.com", function(){
            $(".hiddenStory").hide();
        }
    );
    

    如果你不使用 .load 方法,你应该有某种回调来配合(例如,如果使用 $.ajax 则成功...)

    【讨论】:

    • 嘿范西姆克!谢谢!您的第一个选项非常有效,可以在一开始就使用“display:none”隐藏“hiddenStory”div。我仍然需要修复将 .preventDefault() 应用于此区域中的链接的代码的最后一部分。这允许我的标签在使用 jQuery BBQ 在 URL 中声明标签的索引时仍然正常工作。你介意告诉我如何将它集成到一个函数中或使用“.on()”重写它吗?
    • // 防止在 BBQ 历史记录中的默认链接行为声明 // 带有“showMoreOrLess”链接的选项卡窗格 $(".showMoreOrLess").click(function (event) { event.preventDefault(); //在这里你也可以做各种事情 }); // /防止“showMoreOrLess”链接上的默认行为
    • 我可以试试。但是,我对烧烤不熟悉。 $(.showMoreOrLess) 元素是锚标签吗?
    • 再次感谢。不熟悉烧烤也没问题。我只需要 $(.showMoreOrLess) 锚标签来防止默认行为。这可以防止他们在 URL 中添加“#”哈希,让 BBQ 继续跟踪选项卡索引的数组。我不知道我是否可以将其包装在上面第一个示例中当前使用 .on() 的相同代码块中。我真的很感谢你看到这个!
    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多