asteroid

Рейтинг
134
Регистрация
04.11.2007

spilden01, добавьте атрибут alt для удобства, чтобы не парсить текст.


<input type="checkbox" onclick="filter(this)" alt="комедия">Комедия
<input type="checkbox" onclick="filter(this)" alt="драма">драма

function filter(e) {
var a = [];
$(e).parent().find('input').each( function() {
if ( this.checked ) {
a.push( $(this).attr('alt') );
}
});
var xfield = a.join('|'); // <- ВОТ ТУТ ПОПРОБОВАТЬ '||', '&&', '&', '+'
if ( xfield != '' ) {
ShowLoading("Идет сортировка");
$.get('/xfsearch/'+encodeURIComponent(xfield)+'/', function(data){
HideLoading("Завершено");
$("#dle-content").html(data);
});
}
}
Ayavryk:
jQuery нынче слишком много весит, чтобы говорить о минимализме.

Немного некорректно я выразился. Имелся ввиду минимализм конструкций к инструменту.

Аналогия - минимализм в SQL запросе. Мы же не смотрим на тяжесть и размер движка БД. Важен результат ну и скорость.

Ayavryk:
Причем kostyanet зря катит баллоны на юзеров jQuery. В MVC фреймворках чрезмерное навешивание лишних событий совершенно обычное дело и никто не ругается

C MVC не знаком, а вот с jQuery поздно познакомился - жалею. Испохабили его применение не нужными свистельками и перделками на страницах. А в плане отсортировать/подсветить/спрятать/показать информацию на стороне клиента он очень хорош.

Язык преобразования XSLT - вот где избыточность. У неподготовленного юзера может случится диссонанс от погружения в него. Например, когда переменные не могут изменяться вообще, а повторы текстовых цепочек "похожих на $селекторы" с небольшими изменениями присутствуют постоянно. Встречал примеры, где сами разработчики языка не понимали процессов преобразований. Но это работало. Его конструкции по выборке данных могут дать фору базам данных. За это он мне очень нравится, как тяжёлый и избыточный, но отличный инструмент.

spilden01:
url мульти запроса, нет, я не могу сделать мультивыбор, и запроса поэтому нету(

О как! Вы просите помощи, но умалчиваете о конечном результате.

У меня рука не поднимается дать пример в котором количество галок = количеству запросов к серверу. Если 10 пользователей проставят 20 галок? Вас за ДДОС забанят, а мне сервер жалко.

Чтоб галки оставались уберите return false.

Пример url мульти запроса покажите.

kostyanet:
Это религия.

Это логика.

kostyanet:

У меня другая религия и повторное использование текстового идентификатора в моей церкви считается грехом. :) А потому что как иначе, ей же надо css подавать, этой parents() да? Туда же не засунешь комбинацию this и "а", который тоже два раза. В общем это мелочи, конечно, но из них и состоит культура.

Ограничение путешествия по дереву вверх не является повтором "использование текстового идентификатора". Это новая задача внутри первой с совпадающими условиями. И мой логический атеизм поощряет минимализм в скриптовых конструкциях. Он же считает jQuery не бескультурной js панацеей, а обычным инструментом.

kostyanet:
... Так чтобы находить нужный элемент вверх по дереву пишется простейшая функция ...

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


<div id="div">
<a href="#link1">
<img src="/img/chart_area.png" />link1<b>bold<i>italic</i></b>
</a>
...
</div>

$('#div').click( function(e) {
if ( ! $(e.target).is('a') && ! $(e.target).parents('#div a').length ) {
$(this).toggleClass('yellow');
}
});

Вот теперь понимаю, что в $селекторе.click() такие условия невозможно было задать.

kostyanet, решение с target, как по мне, это лучший вариант. Благодарю Вас.


if ( $(e.target).is(':not(a)') ) {
$(this).toggleClass('yellow');
}

Если кто возьмёт идею, то тут есть минусы. Если в ссылке <a> есть элементы, то их тоже придётся указывать и "давить". Например <img>


<a href="#link1"><img src="/img.jpg" />link1</a>

if ( $(e.target).is(':not(a,img)') ) {
$(this).toggleClass('yellow');
}


---------- Добавлено 16.08.2015 в 22:05 ----------

viКing:
e.stopPropagation();

Если я правильно понял, то Вы предлагаете делать второй обработчик на <a> и в нём stopPropagation() "давить" первый. Первый был на <div>.

Благодарю за идею. Не пробовал такой вариант, но возьму на вооружение.

---------- Добавлено 16.08.2015 в 22:11 ----------

RiDDi, Благодарю!

Реально под вечер туплю. Эта строчка красивее и быстрее моей


if ( ! $(e.target).is('a') ) {
...
}

Дать команду php -v, если после версии есть (cli) - можно запускать.

В CLI скрипт будет работать пока сам не остановится или не прервут. set_time_limit(0) бесполезен. Убедиться можно командой php -r 'sleep(600);', что даст 10 минут работы без нагрузки.

Проще запускать файл php -f myfile.php без всяких первых строк #!/usr/bin/php а сразу <?...?>

Нагрузка - как написан скрипт. Может и 100% ядра на процесс съесть.

За время max_input_time и max_execution_time успеваете файл загрузить? Попробуйте увеличить. И в apache Timeout.

Solmyr, с Autofill народ на stackoverflow использует задержку setTimeout 200-250мс.

Если хотите заморочиться, то на гитхабе есть autofill-event с копирайтом гугла.

Всего: 109