javascript - jQuery ui 选项卡加载/tabsload 事件不触发

标签 javascript jquery jquery-ui iframe jquery-ui-tabs

这似乎与我的问题相同:jquery ui tabs load event does not fire

但是提供的解决方案对我不起作用。

我的代码:

<script type="text/javascript">

    $(document).ready(function(){

        $( "#tabs" ).bind( "tabsload", function(event, ui) {
            alert("ok");
            changeheight();
        });
        $("#tabs").tabs({
        load: function(event, ui){
            alert("load");
            changeheight();},
        cache: true});
    });

function changeheight(){
    alert("changeheight");
    var iframe = document.getElementById("#iframe1");
    var htmlheight = iframe.contentWindow.document.body.scrollHeight;
    alert(htmlheight);
    $("#iframe1").height(htmlheight+"px");
}

</script>

<div id="tabs">
    <ul style="padding: 0; margin: 0;">
        <li class="context-tab" ><a href="#iframe1" id="recent-tab" >Recent</a></li>
    </ul>

    <iframe id="iframe1" src="/canvas/getstories?context=recent" style="width:95%;">
        </iframe>

如您所见,我正在尝试两种方法,但都不起作用。

最佳答案

load 处理程序仅适用于通过 ajax 加载的选项卡。要执行您想做的操作,您需要将加载处理程序附加到 iframe 元素:

<script type="text/javascript">

    $(document).ready(function(){
        $('#iframe1').load(function() {
          alert("ok");
          changeheight();
        });

        $("#tabs").tabs({
        load: function(event, ui){
            alert("load");
            changeheight();},
        cache: true});
    });

    function changeheight(){
        alert("changeheight");
        var iframe = document.getElementById("#iframe1");
        var htmlheight = iframe.contentWindow.document.body.scrollHeight;
        alert(htmlheight);
        $("#iframe1").height(htmlheight+"px");
    }

</script>

<div id="tabs">
    <ul style="padding: 0; margin: 0;">
        <li class="context-tab" ><a href="#iframe1" id="recent-tab" >Recent</a></li>
    </ul>

    <iframe id="iframe1" src="/canvas/getstories?context=recent" style="width:95%;"></iframe>
</div>

但请注意,您的 iframe 可能会在有人有机会单击该选项卡之前加载。这可能就是你想要的。如果您只想在选择选项卡时触发某些操作,请使用 tabsselect 事件:

$( ".selector" ).bind( "tabsselect", function(event, ui) {
  ...
});

关于javascript - jQuery ui 选项卡加载/tabsload 事件不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9071878/

相关文章:

javascript - 为什么我使用此代码会得到一个空白元素?

javascript - 如何 chop 非环绕 HTML 表格单元格中的多余文本并以 "..."结尾

jquery定时改变item类

jquery - j模板 : html in variables

jquery - 如何优雅地展开 jQuery UI 工具提示?

javascript - 基于第 n 个元素合并数组的有效方法是什么?

Javascript 每个 tr 中的最高数字,跳过 3 列

jQuery 重置表单值+无效错误

javascript - jQuery ui-datepicker-trigger 错误 : 'J.inline' is null or not an object (happens on Mouseover)

javascript - 日期选择器不工作(ASP.NET MVC)