Jump to content

Critical Error

Newbie
  • Posts

    23
  • Joined

  • Last visited

Posts posted by Critical Error

  1. Здравствуйте, друзья.

    Пишу плагин всплывающей подсказки. При на ведении на элемент открывается другой элемент. Открывается он по предустановленной настройке для метода $.show()

    Примерный код приведу:

    $('a.activate').on({

    moseenter: function(){
    var properties = {
    effect: 'drop',
    direction: 'down',
    distance: 20,
    duration: 300
    };

    var oncomplete = { complete: function(){ /* Здесь и нужно узнать эффект */ } };

    var properties = $.extend( properties, oncomplete );

    $('div.bubble').show( properties );
    }

    })

    Все это нужно мне чтобы составить условие для определенного эффекта

  2. Короче, я психнул :), и сделал объявление переменных в каждой функции, их там немного. Вот что теперь загвоздка в том, что при сворачивании/разворачивании по кнопке окна браузера не срабатывает resize.

    Вот что вышло:


    $(function(){
    // Remove the slider-plugin-no-js class from the body
    $("body").removeClass("slider-plugin-no-js");
    // Прелоадер
    $(".slider-plugin").children('.slide').hide().end().prepend('<p class="loading">Loading...<br /><img src="'+dle_root+'images/ajax-loader.gif" alt="loading..." /></p>')
    });

    var sliderCount = 1;

    $.fn.codaSlider = function(settings) {

    settings = $.extend({
    autoHeight: 1,
    autoHeightEaseDuration: 1000,
    autoHeightEaseFunction: "easeInOutExpo",
    autoSlide: 0,
    autoSlideInterval: 7000,
    autoSlideStopWhenClicked: 1,
    crossLinking: 1,
    dynamicArrows: 1,
    dynamicArrowLeftText: "« left",
    dynamicArrowRightText: "right »",
    dynamicTabs: 1,
    dynamicTabsAlign: "center",
    dynamicTabsPosition: "top",
    externalTriggerSelector: "a.xtrig",
    firstPanelToLoad: 1,
    panelTitleSelector: "h2.title",
    slideEaseDuration: 1000,
    slideEaseFunction: "easeInOutExpo",
    sliderResponse: 1
    }, settings);

    return this.each(function(){

    // Uncomment the line below to test your preloader
    // alert("Testing preloader");

    var slider = $(this);

    // Если нам нужны стрелки навигации
    if (settings.dynamicArrows) {
    slider.addClass("arrows");
    slider.prepend('<div class="slide-prev" id="slider-nav-prev-' + sliderCount + '"><a href="#">' + settings.dynamicArrowLeftText + '</a></div>');
    slider.append('<div class="slide-next" id="slider-nav-next-' + sliderCount + '"><a href="#">' + settings.dynamicArrowRightText + '</a></div>')
    };


    var sliderWidth = slider.width(); // Определяем ширину слайдера
    $('.slide', slider).css({ width : sliderWidth }); // Устанавливаем sliderWidth шириной для каждой панели

    var panelWidth = slider.find('.slide').width(); // Определяем ширину каждой панели в слайдере
    var panelCount = slider.find('.slide').size(); // Определяем количество панелей в слайдере
    var panelContainerWidth = panelWidth*panelCount; // Суммарная ширина всех панелей

    $('.slide', slider).wrapAll('<div class="slides"><div class="deepest"></div></div>'); // Обволакиваем все панели в контейнер
    $('div.slides > div', slider).css({ width : panelContainerWidth }); // Устанавливаем panelContainerWidth как ширину обертки

    var navClicks = 0; // Используется если autoSlideStopWhenClicked = true

    if (settings.crossLinking && location.hash && parseInt(location.hash.slice(1)) <= panelCount){

    var currentPanel = parseInt(location.hash.slice(1));
    var offset = - (panelWidth*(currentPanel - 1));

    $('div.slides > div', slider).css({ marginLeft : offset })

    } else if (settings.firstPanelToLoad!=1 && settings.firstPanelToLoad <= panelCount){

    var currentPanel = settings.firstPanelToLoad;
    var offset = - (panelWidth*(currentPanel - 1));
    $('div.slides > div', slider).css({ marginLeft : offset })

    } else {

    var currentPanel = 1

    };

    slider.children('.slides').find('.slide').removeClass('active').parents('.slides > div').find('.slide:eq(' + (currentPanel - 1) + ')').addClass('active');

    function reinit() {
    var sliderWidth = slider.width(); // Определяем ширину слайдера
    $('.slide', slider).css({ width : sliderWidth }); // Устанавливаем sliderWidth шириной для каждой панели

    var panelWidth = slider.find('.slide').width(); // Определяем ширину каждой панели в слайдере
    var panelCount = slider.find('.slide').size(); // Определяем количество панелей в слайдере
    var panelContainerWidth = panelWidth*panelCount; // Суммарная ширина всех панелей

    if (currentPanel == panelCount){
    var offset = 0;
    currentPanel = 1;
    $('div.slides > div', slider).css({ marginLeft : offset })
    } else {
    currentPanel = $('.slide.active', slider).index();
    var offset = - (panelWidth*currentPanel);
    $('div.slides > div', slider).css({ marginLeft : offset })
    };

    $('div.slides > div', slider).css({ width : panelContainerWidth }); // Устанавливаем panelContainerWidth как ширину обертки

    var panelHeight = $('.slide.active', slider).height();
    slider.css({ height : panelHeight });
    }
    reinit();
    $(window).on('resize', function() {
    reinit();
    });

    $('#slider-nav-prev-' + sliderCount + ' a').click(function(){

    var sliderWidth = slider.width(); // Определяем ширину слайдера
    $('.slide', slider).css({ width : sliderWidth }); // Устанавливаем sliderWidth шириной для каждой панели

    var panelWidth = slider.find('.slide').width(); // Определяем ширину каждой панели в слайдере
    var panelCount = slider.find('.slide').size(); // Определяем количество панелей в слайдере
    var panelContainerWidth = panelWidth*panelCount; // Суммарная ширина всех панелей

    $('div.slides > div', slider).css({ width : panelContainerWidth }); // Устанавливаем panelContainerWidth как ширину обертки

    navClicks++;
    if (currentPanel == 1){
    offset = - (panelWidth*(panelCount - 1));
    alterPanelHeight(panelCount - 1);
    currentPanel = panelCount;
    slider.children('.slider-nav').find('a.current').removeClass('current').parents('ul').find('li:last a').addClass('current');

    slider.children('.slides').find('.active').removeClass('active').parents('.slides > div').find('.slide:last').addClass('active')
    } else {
    currentPanel -= 1;
    alterPanelHeight(currentPanel - 1);
    offset = - (panelWidth*(currentPanel - 1));
    slider.children('.slider-nav').find('a.current').removeClass('current').parent().prev().find('a').addClass('current');

    slider.children('.slides').find('.slide').removeClass('active').parents('.slides > div').find('.slide:eq(' + (currentPanel - 1) + ')').addClass('active');

    };
    $('div.slides > div', slider).animate({ marginLeft : offset }, settings.slideEaseDuration, settings.slideEaseFunction);
    if (settings.crossLinking) { location.hash = currentPanel };
    return false
    });
    $('#slider-nav-next-' + sliderCount + ' a').click(function(){

    var sliderWidth = slider.width(); // Определяем ширину слайдера
    $('.slide', slider).css({ width : sliderWidth }); // Устанавливаем sliderWidth шириной для каждой панели

    var panelWidth = slider.find('.slide').width(); // Определяем ширину каждой панели в слайдере
    var panelCount = slider.find('.slide').size(); // Определяем количество панелей в слайдере
    var panelContainerWidth = panelWidth*panelCount; // Суммарная ширина всех панелей

    $('div.slides > div', slider).css({ width : panelContainerWidth }); // Устанавливаем panelContainerWidth как ширину обертки

    navClicks++;
    if (currentPanel == panelCount){
    offset = 0;
    currentPanel = 1;
    alterPanelHeight(0);
    slider.children('.slider-nav').find('a.current').removeClass('current').parents('ul').find('a:eq(0)').addClass('current');

    slider.children('.slides').find('.slide').removeClass('active').parents('.slides > div').find('.slide:eq(0)').addClass('active')
    } else {
    offset = - (panelWidth*currentPanel);
    alterPanelHeight(currentPanel);
    currentPanel += 1;
    slider.children('.slider-nav').find('a.current').removeClass('current').parent().next().find('a').addClass('current');

    slider.children('.slides').find('.slide').removeClass('active').parents('.slides > div').find('.slide:eq(' + (currentPanel - 1) + ')').addClass('active');

    };
    $('div.slides > div', slider).animate({ marginLeft : offset }, settings.slideEaseDuration, settings.slideEaseFunction);
    if (settings.crossLinking){ location.hash = currentPanel };
    return false
    });
    if (settings.dynamicTabs){
    var dynamicTabs = '<div class="slider-nav" id="slider-nav-' + sliderCount + '"><ul class="deepest"></ul></div>';
    switch(settings.dynamicTabsPosition){
    case "bottom":
    slider.append(dynamicTabs);
    break;
    default:
    slider.prepend(dynamicTabs);
    break
    };
    ul = $('#slider-nav-' + sliderCount + ' ul');
    $('.slide', slider).each(function(n) {
    ul.append('<li class="tab' + (n + 1) + '"><a href="#' + (n + 1) + '">' + $(this).find(settings.panelTitleSelector).text() + '</a></li>')
    });
    //navContainerWidth = slider.width() + slider.children('.slide-nav-prev').width() + slider.children('.slide-nav-nex').width();
    //ul.css({ width : navContainerWidth });
    switch(settings.dynamicTabsAlign){
    case "center":
    ul.addClass('slider-nav-center');
    break;
    case "left":
    ul.addClass('slider-nav-left');
    break;
    case "right":
    ul.addClass('slider-nav-right');
    break
    }
    };
    $('#slider-nav-' + sliderCount + ' a').each(function(z) {

    $(this).bind("click", function() {

    var sliderWidth = slider.width(); // Определяем ширину слайдера
    $('.slide', slider).css({ width : sliderWidth }); // Устанавливаем sliderWidth шириной для каждой панели

    var panelWidth = slider.find('.slide').width(); // Определяем ширину каждой панели в слайдере
    var panelCount = slider.find('.slide').size(); // Определяем количество панелей в слайдере
    var panelContainerWidth = panelWidth*panelCount; // Суммарная ширина всех панелей

    $('div.slides > div', slider).css({ width : panelContainerWidth }); // Устанавливаем panelContainerWidth как ширину обертки

    navClicks++;
    $(this).addClass('current').parents('ul').find('a').not($(this)).removeClass('current');

    offset = - (panelWidth*z);
    alterPanelHeight(z);
    currentPanel = z + 1;
    $('div.slides > div', slider).animate({ marginLeft : offset }, settings.slideEaseDuration, settings.slideEaseFunction);

    slider.children('.slides').find('.slide').removeClass('active').parents('.slides > div').find('.slide:eq(' + (currentPanel - 1) + ')').addClass('active');

    if (!settings.crossLinking) { return false }
    })
    });
    $(settings.externalTriggerSelector).each(function() {

    if (sliderCount == parseInt($(this).attr("rel").slice(12))) {
    $(this).bind("click", function(){

    var sliderWidth = slider.width(); // Определяем ширину слайдера
    $('.slide', slider).css({ width : sliderWidth }); // Устанавливаем sliderWidth шириной для каждой панели

    var panelWidth = slider.find('.slide').width(); // Определяем ширину каждой панели в слайдере
    var panelCount = slider.find('.slide').size(); // Определяем количество панелей в слайдере
    var panelContainerWidth = panelWidth*panelCount; // Суммарная ширина всех панелей

    $('div.slides > div', slider).css({ width : panelContainerWidth }); // Устанавливаем panelContainerWidth как ширину обертки

    navClicks++;
    targetPanel = parseInt($(this).attr("href").slice(1));
    offset = - (panelWidth*(targetPanel - 1));
    alterPanelHeight(targetPanel - 1);
    currentPanel = targetPanel;
    slider.children('.slider-nav').find('a').removeClass('current').parents('ul').find('li:eq(' + (targetPanel - 1) + ') a').addClass('current');

    slider.children('.slides').find('.slide').removeClass('active').parents('.slides > div').find('.slide:eq(' + (currentPanel - 1) + ')').addClass('active');

    $('div.slides > div', slider).animate({ marginLeft : offset }, settings.slideEaseDuration, settings.slideEaseFunction);
    if (!settings.crossLinking){ return false }
    })
    }
    });
    if (settings.crossLinking && location.hash && parseInt(location.hash.slice(1)) <= panelCount){
    $("#slider-nav-" + sliderCount + " a:eq(" + (location.hash.slice(1) - 1) + ")").addClass("current")
    } else if (settings.firstPanelToLoad != 1 && settings.firstPanelToLoad <= panelCount){
    $("#slider-nav-" + sliderCount + " a:eq(" + (settings.firstPanelToLoad - 1) + ")").addClass("current")
    } else {
    $("#slider-nav-" + sliderCount + " a:eq(0)").addClass("current")
    };
    if (settings.autoHeight){
    panelHeight = $('.slide:eq(' + (currentPanel - 1) + ')', slider).height();
    slider.css({ height : panelHeight })
    };
    if (settings.autoSlide){
    slider.ready(function() {
    setTimeout(autoSlide, settings.autoSlideInterval)
    })
    };
    function alterPanelHeight(x) {
    if (settings.autoHeight) {
    panelHeight = $('.slide:eq(' + x + ')', slider).height();
    slider.animate({ height : panelHeight }, settings.autoHeightEaseDuration, settings.autoHeightEaseFunction)
    }
    };
    function autoSlide() {

    var sliderWidth = slider.width(); // Определяем ширину слайдера
    $('.slide', slider).css({ width : sliderWidth }); // Устанавливаем sliderWidth шириной для каждой панели

    var panelWidth = slider.find('.slide').width(); // Определяем ширину каждой панели в слайдере
    var panelCount = slider.find('.slide').size(); // Определяем количество панелей в слайдере
    var panelContainerWidth = panelWidth*panelCount; // Суммарная ширина всех панелей

    $('div.slides > div', slider).css({ width : panelContainerWidth }); // Устанавливаем panelContainerWidth как ширину обертки

    if (navClicks == 0 || !settings.autoSlideStopWhenClicked) {
    if (currentPanel == panelCount){
    var offset = 0;
    currentPanel = 1
    } else {
    var offset = - (panelWidth*currentPanel);
    currentPanel += 1
    };
    alterPanelHeight(currentPanel - 1);
    slider.children('.slider-nav').find('a').removeClass('current').parents('ul').find('li:eq(' + (currentPanel - 1) + ') a').addClass('current');

    slider.children('.slides').find('.slide').removeClass('active').parents('.slides > div').find('.slide:eq(' + (currentPanel - 1) + ')').addClass('active');

    $('div.slides > div', slider).animate({ marginLeft : offset }, settings.slideEaseDuration, settings.slideEaseFunction);
    setTimeout(autoSlide, settings.autoSlideInterval)
    }
    };


    $('.slide', slider).show().end().find("p.loading").remove();
    slider.removeClass("preload");

    sliderCount++

    })
    };

  3. Да, повесил. Все нужные переменные определяются единственный раз в начале скрипта и являются общими для всех функций ниже.

    При ресайзе идет работает

    $(window).bind('resize', function(){
    // объявление переменных по новой
    // скрипт реинициализации.
    });

    Получается так, что при ресайзе переменные обновляются и все нормально. Ширина объявляется по новой. А вот те функции, которые ниже, в них, при уже измененной ширине браузера, переменные берутся из первоначальных, кот. в начале скрипта.

    Чтобы не писать в каждой функции объявление этих переменных, хочется понять как можно эти первоначальные значения обновлять если происходит ресайз.

  4. Ребята, здравствуйте. Подскажите, пожалуйста, как для var сделать отслеживание изменения значения:

    var width = $('#content').width();

    При ресайзе окна браузера значение должно обновится без перезагрузки страницы. Есть просто функции, которые от этого значения работают. А при ресайзе значение остается прежним и отображение страдает.

  5. Работает :)

    $('[data-plugin]').each(function(){
    var plugin = $(this),
    type = plugin.data('plugin'),
    settings = plugin.data('settings');

    settings = $.extend( settings, settings );

    if( type=='slider' && settings ){
    plugin.codaSlider(settings);
    }
    });

    alexriz, в кавычки обернул только ключи и помогло

    ... "autoSlide":1,"autoSlideInterval":10000, ...

    Спасибо всем большое за помощь

  6. До того, как прочитать ответы, делал так:

    <div id="slider-1" class="slider-plugin slider-catalyst" data-plugin="slider" data-settings='{autoSlide:1,autoSlideInterval:10000,slideEaseFunction:"linear",slideEaseDuration:300,autoHeightEaseFunction:"linear",autoHeightEaseDuration:300,crossLinking:0,dynamicArrows:0}'>
    ...код слайдов...
    </div>


    <div id="slider-2" class="slider-plugin slider-default" data-plugin="slider" data-setting="{autoSlide:1,autoSlideInterval:10000,crossLinking:0,dynamicArrows:0,dynamicTabs:0}">
    ...код слайдов...
    </div>

    В js инициализирую так:

    var plugins = {};

    $( '[data-plugin]', plugins ).each(function(){
    var plugin = $(this),
    type = plugin.data('plugin'),
    settings = plugin.data('settings');

    if( type=='slider' && settings ){
    plugin.codaSlider(settings);
    }
    });

    Не работает, зараза :(

    С Вашими примерами тоже.

  7. Здравствуйте. Есть небольшая проблема с подключением настроек из пользовательского тега data-settings для плагина coda slider.

    В шаблоне идет след. код:


    <div id="slider-1" class="slider-plugin" data-plugin="slider" data-settings="{autoSlide:1,autoSlideInterval:10000,slideEaseFunction:'linear',slideEaseDuration:300,autoHeightEaseFunction:'linear',autoHeightEaseDuration:300,crossLinking:0,dynamicArrows:0}">
    код шаблона плагина
    </div>

    Таких блоков на странице несколько. ID и настройки в атрибуте data-settings у каждого разные.

    Инициализация происходит в подключаемом js-файле след. образом

    (function($){
    $(document).ready(function() {
    $('div[data-plugin=slider]').each(function(){
    var slider = $(this);
    var settings = slider.attr('data-settings');
    slider.codaSlider(settings);
    });
    });
    });

    В итоге, на странице плагины включаются, но с дефолтными настройками.

    Подскажите, пожалуйста, что я упускаю?

  8. Из-за особенностей дизайна была сделана верстка таким образом, что у <html> и <body> вертикальный скролл не появляется. Вместо этого в <body> есть контейнер (#body) с абсолютным позиционированием со значениями top - 35px; left, bottom и right - 0px. В пространстве с высотой в 35px вверху находится тулбар также с абсолютным позиционированием. Сам код тулбара является дочерним элементом контейнера #body.

    Вся соль в том, что в opera когда курсор над тулбаром и я кручу колесико, скролл в #body работает, т.е. опускается/поднимается. Но в других браузерах это не срабатывает.

    Есть ли способ заставить прокручиваться скролл если курсор находится над фиксированным блоком, кот., в свою очередь, находится внутри такого же, фиксированного блока? Может JS есть какой-то? Подскажите, пожалуйста

  9. Та не, для картинки закруглять углы через css для меня не вариант, потому что картинки там могут быть и прямоугольные.

    Непонятно, почему в Opera вложенный контейнер размерами 66х66 пикселей с overflow: hidden и закругленными углами не работает как этого ожидаешь - не прячет углы картинки под закругленные углы контейнера, а показывает только часть картинки, которая должна быть видна из-за overflow:hidden для контейнера, в виде квадрата, как это было бы, если закругленных углов там не было.

    Меня это совсем из колеи выбило. Третий день не могу найти решение

  10. Суть проблемы в след. Есть контейнер DIV с закругленными углами до такой степени, что получается круг. Внутри него еще контейнер DIV с overflow: hidden и также с закругленными углами как и первый. И наконец в нем тег картинки - IMG. Во всех браузерах, кроме IE ниже 9, все отображается нормально, в соответствии с ожиданиями, картинка не выходит за границы контейнера, и на вид становится тоже круглой, но в Opera этого не происходит. Картинка не выходит за рамки, но на радиус углов не реагирует - остается квадратной

    В опере:

    opera.png

    Остальные:

    all.png

    Разметка HTML:


    <div class="user_photo">
    <div class="comm_photo">
    <img src="{foto}" alt="" width="70" />
    </div>
    </div>

    Вот CSS:


    .user_photo {
    border: 3px solid #90ac62;
    -moz-border-radius: 36px;
    -webkit-border-radius: 36px;
    border-radius: 36px;
    height: 66px;
    padding: 1px;
    position: relative;
    width: 66px;
    }

    .user_photo .comm_photo {
    -moz-border-radius: 36px;
    -webkit-border-radius: 36px;
    border-radius: 36px;

    -moz-box-shadow:
    inset 0 0 10px rgba(0,0,0,0.75);
    -webkit-box-shadow:
    inset 0 0 10px rgba(0,0,0,0.75);
    box-shadow:
    inset 0 0 10px rgba(0,0,0,0.75);

    height: 66px;
    overflow: hidden;
    padding: 0;
    width: 66px;
    }

    Подскажите, пожалуйста, как решить эту проблему в Opera?

    UPD: Забыл дописать для внутреннего блока overflow: hidden. Был в другом CSS файле

  11. Я firebug'ом как-то не пользовался, но попробовал и увидел что возвращает текст сразу со всех найденных элементов. Поэтому и не находит в массиве подходящего текста. Спасибо за помощь. Вам обоим. Я учусь пока что на инженера-технолога в сфере строительства, а сайтостроение как хобби. Поэтому еще не тот уровень знаний JS как хотелось бы.

  12. Я ведь попросил о помощи с написанием условия, а не послать меня на сайт с документацией, которую (явно!) я читал; скрипт написан мною, но некоторые детали мне не ясны.

    Вы коммерческий проект делаете?

    Вам дали задание, вы сделали его за счет чужой головы, получили денежки и радуетесь, что нашли на форуме лошков, которые за 0 копеек все чудненько заколбасили. Вопрос, как к вам относиться? Как к чудаку на букву М?

    Вопрос, вы хоть что-то поняли из того кода, что вам дали? Я уверен что ничего. Тогда зачем вам помогать дальше?

    Можете не отвечать на мои вопросы, потому что с вами и так все понятно.

    Кривой способ. Но вроде работает.

    Почему вы думаете, что кривой?

    Что вам со мной понятно!? А ничего! Если вы всю жизнь и попадаются одни такие чудаки на букву М, то не стоит всех их клеймить этим логотипом. Среди них могут попасться нормальные адекватные люди, готовые в будущем подсобить в чем-то другом.

    Отвечу вам на первый вопрос, а из ответа сделаете вывод сами. Проект у меня не комерческий, а для себя любимого. Как закончу, скину ссылку. Из трехлетнего опыта единственным за что я получил деньги, так это за установку CBox чата на CMS DataLife Engine. Все!

    И если вы решите вдруг побывать на форуме этой CMS, то вы сможете меня там найти, и увидеть, что я помогаю людям на голодном энтузиазме.

    И да, я понял принцип работы из примера.

    PS. Тему перекинул? Молодееец...

    PSS. И если я пришел на этот форум, то не ради корыстных целей или обманом что-то получить. Я готов поделится и своими знаниями и опытом.

  13. Одно только теперь не ясно, если на странице генерит более одного блока с классом box, то почему-то ни к одному блоку не добавляется указаный класс.

    Critical Error, реши по-быстренькому проблему.

    Я понимаю, что вы умный человек и опыта у вас ого-го, однако ваш мозг воспринимает мои сообщения как неадекватное общение, а руки так и чешутся чтобы написать что-то саркастичное и с презрением чтоб почуствовать себя царем, ну, или царевной...

    Если группа светится красненьким это не значит что можно вести себя как чудак на букву М.

    Я ведь попросил о помощи с написанием условия, а не послать меня на сайт с документацией, которую (явно!) я читал; скрипт написан мною, но некоторые детали мне не ясны.

    Одно только теперь не ясно, если на странице генерит более одного блока с классом box, то почему-то ни к одному блоку не добавляется указаный класс.

    http://jsfiddle.net/ZWtDQ/1/

    Кривой способ. Но вроде работает.

    Интересно было бы узнать как можно было бы улучшить..

    По идее, в написаном вами первом варианте должно в DOM находить элементы с классом box и добавлять зависимый от массива класс, не смотря сколько на странице таких элементов, но почему не происходт то что ожидалось я не понимаю, увы.

    Попробую второй вариант, вижу что работает. Еще раз спасибо. огромное :)

  14. Попробуй так:

     var usa = [ 'Нью Йорк', 'Лос Анджелес', 'Вашингтон' ];
    if(inString(usa)) {
    $( '.box' ).addClass( 'box-usa' );
    }
    var russia = [ 'Москва', 'Санкт Петербург', 'Владивосток' ];
    if(inString(russia)){
    $( '.box' ).addClass( 'box-russia' );
    }

    А теперь определим inString :

    function inString(ar){
    var s = $( '.box header' ).text();
    if (jQuery.inArray(s,ar)>-1) {

    return true;

    }
    }

    Да, все получилось. Теперь более детально изучу принцип работы)

    PS. Не знаю почему, но не могу плюс поставить(

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

    http://api.jquery.com/jQuery.inArray/

    Ответ тут

    И как же это прикрутить интересно!? У меня ведь два массива! Даже если я и сделаю проверку, один хрен будет добавлять два класса.

    Я не могу никак сообразить, что именно нужно записать в if() для каждого случая.

    То есть, если город принадлежит массиву usa то добавляется класс box-usa, если к russia - box-russia

  16. Есть код js


    var usa = [ 'Нью Йорк', 'Лос Анджелес', 'Вашингтон' ];
    if( $( '.box header' ).text(usa) ) {
    $( '.box' ).addClass( 'box-usa' );
    }
    var russia = [ 'Москва', 'Санкт Петербург', 'Владивосток' ];
    if( $( '.box header' ).text(russia) ) {
    $( '.box' ).addClass( 'box-russia' );
    }

    и код шаблона (динамически выводится)

    <div class="box">
    <header><h5>{city}</h5></header>
    {info}
    </div>

    Суть проблемы в том, что когда генерится контент, DIV'у с классом box добавляются оба класса - box-usa и box-russia.

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

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy