В вашем случае разницы заметно не будет. До тех пор, пока на странице не будет миллион элементов которым нужно менять стили/перемещать js-ом. (и в вашем примере условие будет выполняться очень часто, если ширину окна браузера менять, а это не правильно )
В общем как уже сказал, все что можно через css делать, лучше делать именно через него (в том числе и уменьшается вероятность багов.)
-----------
Я за методы ничего не говорил, я говорю за сам DOM, он тугой.
Так как когда создавался, то никто не думал, что сайты будут динамические, и манипулировать с ним будут.
На самом деле, все что можно сделать через css, нужно делать css-ом.
js только на крайний случай (перенос блока куда-нибудь)
Так как работа с DOM деревом очень ресурсоемкая, а это лишняя нагрузка.
Да и править/читать проще css.
Спасибо за отзыв.
Продолжаю работать.
Точно обьявили эту переменную в глобальной области?
и в каком методе ошибку бьет?
я понял, так ui - это не глобальная переменная
мы с метода close не видим ее, так как в методе select это параметр
вы можете создать дополнительную переменную
Пример кода:
var flag = false;jQuery(\"#city\").autocomplete({ source: function(request,response) { jQuery.ajax({ url: \"https://api.cdek.ru/city/getListByTerm/jsonp.php?callback=?\", dataType: \"jsonp\", data: { q: function () { return jQuery(\"#city\").val() }, name_startsWith: function () { return jQuery(\"#city\").val() } }, success: function(data) { flag = false; response(jQuery.map(data.geonames, function(item) { return { label: item.cityName, id: item.id, postCodeArray: item.postCodeArray } })); } }); }, minLength: 1, select: function(event,ui) { flag = true; jQuery('#receiverCityId').val(ui.item.id); },close: function(request,response) {if(!flag){ return alert('error');}else { //code}} });
вроде бы как-то так
А где это ui обьявлено вообще?
скиньте полностью функцию эту
может ui вообще нету, поэтому то и ошибка
close: function(request,response) { var ui; //добавьте if(ui == 'undefined'){ return alert('error'); }; if(ui.item.id){ }
http://prntscr.com/gv4bsy это уберите
если будет ошибка, то мы попадаем в "catch"
а вообще, если ошибку вызывает
if(ui.item.id){
то почему вы внутри условия делаете проверку?
нужно ведь до этого условия
if(ui == 'undefined'){ return alert('error');};if(ui.item.id){ //code}
Попробуйте этим споcобом:
try {
// ваш код
} catch(e) {
// попадем сюда, если произошла ошибка
alert('error');
}
---------------------------
Может вы даже http://prntscr.com/gv471x в это условие не попадаете ?
Не проверял, но думаю, что должно работать.
function createCookie(name,value,days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + value + expires + "; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { createCookie(name,"",-1); } $('.city').on('click', function(e) { $('.city-choose').addClass('active'); e.preventDefault(); }); $('.city-choose li').on('click', function(e) { var some = $(this).data('some'); // var val = $(this).data('val'); var all = $(this).data('all'); $('.phones .tel').attr('href', 'tel:'+all).empty().apped('<span>'+some+'<span> '+val); $('.city').text( $(this).text() ); $('.city-choose').removeClass('active'); if( !readCookie('city') ) { createCookie('city', $(this).text()+'&'+all, 1); }else { eraseCookie('city'); createCookie('city', $(this).text()+'&'+all, 1); } e.preventDefault(); }); $('.city-choose .close').on('click', function(e) { $('.city-choose').removeClass('active'); e.preventDefault(); })
.city-choose { display: none; &.active { display: block; } }
ну и нужно дата атрибуты заполнить для телефонов. По js коду видно где и какие атрибуты http://prntscr.com/guoh22
https://jsfiddle.net/3ndxgtqz/
Наверное как-то так.