2013-07-14 3 views
1

У меня есть неупорядоченный список с большим количеством элементов li. Когда вы нажимаете (событие mousedown) внутри списка, я использую event.target, чтобы определить, было ли нажато li. Если целевым элементом является ul, я де-выбираю все li-элементы.Отмените событие mousedown, если была нажата кнопка прокрутки?

Однако при нажатии на полосу прокрутки также запускается событие mousedown, а целевым элементом является ul. Но я не хочу ничего снимать, нажимая на полосу прокрутки. Итак, как мне определить, была ли нажата кнопка прокрутки, чтобы я мог отменить событие?

Благодаря

+0

Вы не можете. Вы можете обнаружить только те пиксели, которые вы нажали, и сравнить их с шириной документа v.s. окно с. – Ohgodwhy

+0

Возможный дубликат http://stackoverflow.com/questions/10045423/determine-whether-user-clicking-scrollbar-or-content-onclick-for-native-scroll –

+0

О, мне нужно будет предложить решение в этом case - возможно, я попрошу w3c добавить это в спецификацию;) – felamaslen

ответ

0

Вы можете, создавая оболочку DIV с той же высоты и ширины + 30px (скроллинга), который имеет свойство переполнения. Таким образом, когда нажата кнопка прокрутки нового div, это не вызовет щелчок UL.

+0

Я вижу вашу точку зрения, но так же легко обнаружить, произошло ли событие mousedown менее 30 пикселей от конец с использованием offsetX и clientX и т. д. – felamaslen

+0

Это может быть, но мое решение является более чистым, и здесь нет необходимости в скрипте на стороне клиента. Это решение является более устойчивым и более понятным для другого разработчика, которому необходимо настроить код –