ПРИМЕЧАНИЕ: Используя
stopEventPropagation()
что-то, чего нужно избежать, поскольку это повреждает нормальный поток события в DOM. См. эта статья для получения дополнительной информации. Рассмотрите использование этот метод вместо этогоПрисоединение событие щелчка к телу документа, которое закрывает окно. Присоедините отдельное событие щелчка к контейнеру, который останавливает распространение к телу документа.
$(window).click(function() { //Hide the menus if visible }); $('#menucontainer').click(function(event){ event.stopPropagation(); });
Думаю, expandproperties - это то, что вы ищете. Это действует так же, как фильтры ресурсов Maven2 .
Например, если у вас есть каталог src (один из многих файлов):
<link href="${css.files.remote}/css1.css"/>
src / test.txt
И в моем файле сборки ANT мы иметь это:
<project default="default">
<!-- The remote location of any CSS files -->
<property name="css.files.remote" value="/css/theCSSFiles" />
...
<target name="ExpandPropertiesTest">
<mkdir dir="./filtered"/>
<copy todir="./filtered">
<filterchain>
<expandproperties/>
</filterchain>
<fileset dir="./src" />
</copy>
</target>
</project>
build.xml
* При запуске цели ExpandPropertiesTest в вашем отфильтрованном каталоге будет следующее: *
<link href="/css/theCSSFiles/css1.css"/>
отфильтровано /test.txt
Вы можете определить настраиваемый FilterReader . Итак, у вас есть несколько вариантов:
Итак, в методе read () ReplaceTokens замените:
final String replaceWith = (String) hash.get(key.toString());
на вызов getReplacement () метод:
...
final String replaceWith = getReplacement(key.toString);
...
private String getReplacement(String key) {
//first check if we have a replacement defined
if(has.containsKey(key)) {
return (String)hash.get(key);
}
//now use our built in rule, use a StringBuilder if you want to be tidy
return "$" + key + "}";
}
Чтобы использовать это, вы должны убедиться, что ваш класс упакован и в Ant ' s path и измените свой фильтр:
<filterreader classname="my.custom.filters.ReplaceTokens">
<!-- Define the begin and end tokens -->
<param type="tokenchar" name="begintoken" value="$"/>
<param type="tokenchar" name="endtoken" value="}"/>
<!--Can still define explicit tokens, any not
defined explicitly will be replaced by the generic rule -->
</filterreader>
Ant знает концепцию под названием Filterchains , которая здесь полезна. Используйте ReplaceTokens -фильтр и укажите начальный и конечный токены как пустые (обычно это '@'). Это должно помочь.
Один хооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо. 1113118] $ ...} шаблон. Я не могу искать шаблоны $ {...}
, поскольку begintoken является символом, а не строкой. Затем я устанавливаю список токенов, начинающийся с {(т.е. я вижу {user.name
вместо user.name
). Надеюсь, у меня «всего» около 20 строк в my-file.properties, поэтому мне нужно определить «только» 20 токенов в моем Ant-файле ...
Есть ли какое-нибудь простое и глупое решение для решения этого простого и глупого проблема ??