2013-12-14 2 views
0

Я использую разборные вкладки пользовательского интерфейса jQuery. Мой код выглядит следующим образом:Как закрыть вкладку пользовательского интерфейса jQuery с помощью якоря внутри?

HTML

<div id="tabs"> 
    <ul> 
    <li><a href="#tabs-1">Nunc tincidunt</a></li> 
    <li><a href="#tabs-2">Proin dolor</a></li> 
    <li><a href="#tabs-3">Aenean lacinia</a></li> 
    </ul> 
    <div id="tabs-1"> 
    <p>Tab 1 Contents</p> 
     <a href="#" class="btn-close">Close</a> 
    </div> 
    <div id="tabs-2"> 
    <p>Tab 2 Contents</p> 
    <a href="#" class="btn-close">Close</a> 
    </div> 
    <div id="tabs-3"> 
    <p>Tab 3 Contents</p> 
    <a href="#" class="btn-close">Close</a> 
    </div> 
</div> 

Script

$(function() { 
    $("#tabs").tabs({ hide: { effect: "slideUp", duration: 350 }, 
    show: { effect: "slideDown", duration: 350 }, 
    collapsible: true, 
    active: false, 
    }); 
    $(".btn-close").on("click", function() { 
    $("#tabs").tabs("option", "hide", { effect: "slideUp", duration: 350 }); 
    }); 
}); 

мне нужно свернуть открытую вкладку, нажав на "закрыть" якорь, но не может понять, как сделай это. Может ли кто-нибудь сказать, что я делаю неправильно? See above code on JSFiddle.

ответ

1

К сожалению, нет никакого способа скрыть от вкладок плагина. С помощью метода опций вы изменяете настройку плагина. Вы должны вызвать событие щелчка на активной вкладке, как это: (. Этот ответ использует усовершенствования, предложенные A.Wolff, чтобы удалить зависимость от родительского элемента)

$(".btn-close").on("click", function() { 
    $("#tabs").find('li.ui-state-active a').trigger('click'); 
}); 

Здесь ваш обновленный fiddle

+1

или: '$ (" .btn-close "). On (" click ", function() { $ (this) .closest ('. Ui-tabs'). Find ('. Ui-tabs -active a '). click(); }); ' –

+0

@ A.Wolff Мне нравится ваше решение еще лучше, потому что оно не зависит от родителя. Вы должны опубликовать его! – flec

+0

это нормально, отредактируйте свой пост, если вы хотите включить его в свой ответ –

0

Попробуйте это:

$(".btn-close").click(function() { 
    $("#tabs").tabs("option", "toggle", { effect: "slideUp", duration: 350 }); 
    $(this).parent().hide(); 
}); 

Вот fiddle

+0

Это не работает. Вы пробовали это? Вероятно, вы просто использовали '$ (this) .parent(). Hide();', который теперь комментируется. – flec

+0

Да, это так. Извините, моя ошибка – HICURIN

Смежные вопросы