Показаны сообщения с ярлыком хитрости. Показать все сообщения
Показаны сообщения с ярлыком хитрости. Показать все сообщения

четверг, 16 февраля 2012 г.

Обработка нажатий вложенного div в javascript

Недавно встала задача по обработке событий onClick для 2-х div'ов - один вложен в другой. Пример:

Мне нужно было обрабатывать нажатия по коричневому div'у (который был вложен в синий div) так, чтобы onClick для синего div'а не срабатывал. Мне помог этот тред на javascript.ru.

Ну и вот пример:

 
<div id="parent" style="width: 200px;height:200px;background-color: #0000aa;">
    <div id="nested" style="width:100px; height:100px; background:#CC6600;">
    </div>
</div>
<script>
    $("#parent").click(function() {alert("parent");});

    $("#nested").bind("click", function(e) {
        alert('nested');
        stop_bubbling(e);
    });
    
    function stop_bubbling(e) {
        if (e.stopPropagation) e.stopPropagation();
        else e.cancelBubble = true;
    }
</script>

суббота, 7 января 2012 г.

Bash: удаление всех директорий кроме указанной

Можно обойтись простой командой:

rm -rf $(ls -d */ | grep -v SAVETHISDIRECTORY)

Здесь список директорий передается как параметр команды rm с помощью блока $(). Параметр -d у ls необходим для вывода лишь каталогов.

Еще один вариант

find -maxdepth 1 -mindepth 1 -type d ! -name 'SAVETHISDIRECTORY' -exec rm -rf {} \;

В этом случае используется вызов команды rm -rf для всех найденных директорий в текущем каталоге, исключая указанную.
Параметры maxdepth 1 и mindepth 1 нужны для того, чтобы не удалялись вложенные директории внутри SAVETHISDIRECTORY, а также чтобы не производилось попытки удалить текущий каталог (".").
-type d необходим для поиска только директорий.
Самая важная часть здесь - это ! -name 'SAVETHISDIRECTORY'. Она указывает find на то, что необходимо пропустить ("!") все элементы, имя которых ("-name") соответствует шаблону SAVETHISDIRECTORY.
Ну и -exec rm -rf {} \; удаляет все найденные find каталоги.