Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Конфликтуют части скриптов (https://javascript.ru/forum/jquery/58521-konfliktuyut-chasti-skriptov.html)

Nailya 27.09.2015 11:34

Конфликтуют части скриптов
 
Добрый день!

У меня в одном файле находятся два скриптика, относящиеся к разным страницам, и вот первый скрипт делает нерабочий второй.

Как можно их изолировать друг от друга, чтобы не было конфликта между ними?

$(document).ready(function() {

//————-los.html
//норма/авария
        var los_status_val = $(".los-status-val");
        if (los_status_val.html().toLowerCase() == "авария") {
            $(los_status_val).first().addClass("los-status-dam").removeClass("los-status-norma");
        }
        if (los_status_val.html().toLowerCase() == "норма") {
            $(los_status_val).first().addClass("los-status-norma").removeClass("los-status-dam");
        }

//————-vod_uzel.html
// норма/авария
    var vod_status_val = $(".klap");

    if (vod_status_val.first().html().toLowerCase() == "откр.") {
        $(vod_status_val).first().addClass("vod-dam").removeClass("vod-work");
    }
    if (vod_status_val.last().html().toLowerCase() == "откр.") {
        $(vod_status_val).last().addClass("vod-dam").removeClass("vod-work");
    }
    if (vod_status_val.first().html().toLowerCase() == "закр.") {
        $(vod_status_val).first().addClass("vod-work").removeClass("vod-dam");
    }
    if (vod_status_val.last().html().toLowerCase() == "закр.") {
        $(vod_status_val).last().addClass("vod-work").removeClass("vod-dam");
    }
});




Пробовала такой вариант - не помогает:

$(function(){
    // один код
});
$(function(){
    // другой код
});

laimas 27.09.2015 12:39

Зачем же получая jq-объект var los_status_val = $(".los-status-val");, далее $(los_status_val)?

Получен, значит los_status_val.first()... И если нужен переключатель стиля, то может .toggleClass()?

Nailya 27.09.2015 14:41

1)потому что редактор пишет предупреждение, что дублированный jq-селектор

спасибо за toggleClass(), я о нем не знала.

Но как это решит мою задачу?

Nailya 27.09.2015 14:55

вот этот вариант помог

if($('.parentelement').length){
//тут какое-то действие с ним
}

laimas 27.09.2015 15:08

Цитата:

Сообщение от Nailya
Но как это решит мою задачу?

Это не решение проблемы, а возможное упрощение кода, если действительно нужен переключатель.

Что значит дублированный и почему if($('.parentelement').length) решение проблемы, из того что представлено не понять.

Nailya 27.09.2015 15:42

Этот код использовала вот таким образом:

Обернула блок кода условием, применив к нему родительский класс данной страницы. Просто так селектор же не применишь, поэтому length стоит. Таким образом и ошибки не выдает и конфликта нету.

$(".los-status-val") - когда несколько раз использую этот класс, редактор выдает предупреждение о том, типа один и тот же селектор использую много раз, поэтому я его в переменную передала, хотя код спокойно работает и без передачи в переменную.

Просто пока я новичок в jq - пишу как умею




//-------------los.html
    if($('.los-wrap').length){

        //норма/авария
        var los_status_val = $(".los-status-val");
        if (los_status_val.html().toLowerCase() == "авария") {
            $(los_status_val).first().addClass("los-status-dam").removeClass("los-status-norma");
        }
        if (los_status_val.html().toLowerCase() == "норма") {
            $(los_status_val).first().addClass("los-status-norma").removeClass("los-status-dam");
        }
    }

    //-------------vod_uzel.html
    if($('.vodomer-wrap').length){
        // норма/авария

        var vod_status_val = $(".klap");

        if (vod_status_val.first().html().toLowerCase() == "откр.") {
            $(vod_status_val).first().addClass("vod-dam").removeClass("vod-work");
        }
        if (vod_status_val.last().html().toLowerCase() == "откр.") {
            $(vod_status_val).last().addClass("vod-dam").removeClass("vod-work");
        }
        if (vod_status_val.first().html().toLowerCase() == "закр.") {
            $(vod_status_val).first().addClass("vod-work").removeClass("vod-dam");
        }
        if (vod_status_val.last().html().toLowerCase() == "закр.") {
            $(vod_status_val).last().addClass("vod-work").removeClass("vod-dam");
        }
    }

laimas 27.09.2015 16:17

var vod_status_val = $(".klap");

if (vod_status_val.first().html().toLowerCase() == "откр.") {
$(vod_status_val).first().addClass("vod-dam").removeClass("vod-work"); - это зачем?

PS. Вы были на прогулке, вернулись вечером, темно, заходя в комнату включаете свет. Если считать выключатель исполнительным устройством, то какими состояниями он обладает?

dd_smol 27.09.2015 22:55

А можно пример html. И более детально пояснить что делает скрипт или что он должен делать. :)


Часовой пояс GMT +3, время: 17:59.