2016-05-03 3 views
0
$("div.accordion").accordion({ 
       autoHeight: false, 
       collapsible: true, 
       active: false, 
       icons: false, 
       heightStyle: "content", 
       create: function(event, ui) { 
        if($.trim($(ui.newPanel).html()).length == 0){ 
        $(ui.newHeader).find('span').removeClass('glyphicon').removeClass('glyphicon-plus').removeClass('glyphicon-minus').addClass('glyphicon-none'); 
        } 
       } 
}); 

Я пытаюсь реализовать эту функцию создания на аккордеоне jquery, но, похоже, она не срабатывает при создании аккордеона.Jquery Accordion create function

Если я помещаю этот код в событие beforeActivate, он срабатывает просто отлично.

Как я могу получить это утверждение if, чтобы отключить его при создании аккордеона?

ответ

0

Синтаксис верен. Итак, единственное логическое объяснение заключается в том, что ваш if чек не оценивается до true. Чтобы убедиться, добавьте этот код и убедитесь, что он что-то вносит в вашу консоль.

$(document).ready(function(){ 
    $("div.accordion").on("accordioncreate", function(){ 
    console.log('YES! It is working just fine.'); 
    }); 
}); 
+0

Очень хорошая точка здесь @Uzbekjon. Консоль действительно регистрирует его. Я думаю, что моя проблема где-то с ui.newPanel. Функция create не использует ui.newPanel, но я боюсь, что не знаю точно, что она использует. – FoxMcCloud

+0

'ui' имеет только' header' и 'panel'. Просто загляните в [docs] (http://api.jqueryui.com/accordion/#event-create). – Uzbekjon

+0

Как можно проходить через панели, если они закрыты и будут пустыми? Мне нужно проверить, пусты ли они и изменить класс заголовка на основе результата. – FoxMcCloud