Чтобы сделать это, вы можете переключаться между вызовами методов attr()
и removeAttr()
в зависимости от того, имеет ли элемент атрибут при нажатии:
$(".accordion-expander").click(function(e) {
e.preventDefault();
var method = $(this).is('[data-equalizer-watch]') ? 'removeAttr' : 'attr';
$(this)[method]('data-equalizer-watch', '');
});
[ 111] <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="accordion-expander" href="#" data-equalizer-watch>
foo
</a>
Однако не гарантируется, что эта логика будет работать так, как вам нужно. Это будет зависеть от того, как зависимая логика обращается к атрибуту.
Гораздо лучшим решением было бы всегда включать атрибут data
в элемент, но иметь его значение в виде логического флага, который вы переключаете, например:
$(".accordion-expander").click(function(e) {
e.preventDefault();
var $el = $(this);
$el.data('equalizer-watch', !$el.data('equalizer-watch'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="accordion-expander" href="#" data-equalizer-watch="true">
foo
</a>
Открытое приложение с относительно простым пользовательским интерфейсом, хорошо разработанное, - crack.net. Я использовал его, чтобы, наконец, понять mvvm.
Что касается рабочего процесса проектирования, вам будет сложнее ответить на этот вопрос. Вы должны выяснить, что будет работать для вас и ваших дизайнеров. Они могут работать в том же файле .proj, что и ваши разработчики, и это очень удобно. Но вы можете разделить эти сборки для управления.
Что касается рабочего процесса.
Я работал в команде, где у нас был преданный дизайнер пользовательского интерфейса. Хотя у него была степень по CS, он сказал, что использование Blend слишком сильно отвлекает от дизайна пользовательского интерфейса. Поэтому он все еще делал макеты, а разработчик переводил это в Blend + VS + ручные настройки XAML.
Кроме того, несмотря на то, что заявлено, Blend наиболее полезен в качестве редактора примеров-фрагментов для лучшего понимания XAML.
В моем текущем проекте WPF я в основном использую Kaxaml, так как редактор WPF в моей установке VS мучительно медленен и нестабилен.
Идея в том, что ваш дизайнер создаст вам XAML, а разработчик просто добавит к этому код - у нас это не сработало. И, честно говоря, я не понимаю, как это может работать вообще. Поскольку в пользовательском интерфейсе еще есть много вещей, которые необходимо настроить для уровня представления.
Кроме того, любая технология пользовательского интерфейса может быть изолирована в хорошо спроектированной системе. И я не вижу в этом никаких преимуществ WPF. Тем более что MS так активно продвигает привязку данных.