2012-07-29 1 views
1

Сказать, что у меня есть этот размеченный отрывок:Можно ли выбрать все элементы, имена атрибутов (не значения), начинающиеся с определенной строки?

<p onblur="...">text 1</p> 
<p class="myclass">text 2</p> 
<p onfocus="...">text 3</p> 

Есть ли селектор CSS, который я мог бы использовать, чтобы получить первые и последние элементы (но не в середину), используя тот факт, что они оба имеют атрибуты, которые начинаются с 'на'? Я ищу общее решение, а не что-то для этого конкретного случая (поскольку, конечно, предполагаемый результат может быть достигнут гораздо более прямолинейными способами для этого конкретного примера).

Решение на основе Javascript будет отлично работать и для меня (хотя я надеюсь избежать подхода грубой силы для изучения каждого элемента). На самом деле это то, что я ищу (селектор, который можно использовать с jQuery или аналогичной библиотекой).

+2

LOL это было приятно редактировать, я думал, что 'pre' с закодированной HTML был код в OP в. – Esailija

+1

Думаю, вам лучше найти совершенно другую стратегию кодирования. Связывание обработчиков событий через атрибуты «onfoo» довольно ограничено, и он объединяет код и разметку. Если вы использовали JavaScript для обнаружения элементов и привязки обработчиков, вы можете отметить их классом, чтобы указать на этот факт. – Pointy

+0

Я думаю, что это уродливый дизайн для выбора над именами атрибутов. Возможно, вы можете добавить лучший селектор. –

ответ

1

Как указывалось pointy, это не рекомендуемый способ обойти вещи. Просто используйте класс для группировки элементов, которые вы хотите настроить сразу.

Однако можно ориентировать большинство обработчиков событий с этим:

[onabort],[onbeforecopy],[onbeforecut],[onbeforepaste],[onblur],[onchange],[onclick],[oncontextmenu],[oncopy],[oncut],[ondblclick],[ondrag],[ondragend],[ondragenter],[ondragleave],[ondragover],[ondragstart],[ondrop],[onerror],[onfocus],[oninput],[oninvalid],[onkeydown],[onkeypress],[onkeyup],[onload],[onmousedown],[onmousemove],[onmouseout],[onmouseover],[onmouseup],[onmousewheel],[onpaste],[onreset],[onscroll],[onsearch],[onselect],[onselectstart],[onsubmit] { 
    color: #BADBAD; 
} 

См демо http://jsfiddle.net/uwXgt/1/

0

Существует селектор CSS, чтобы выбрать на основе элемента атрибутов:

p[onfocus] { color:blue; } 
p[class=myclass] { color:red; } 

Но нет никакого способа, в CSS, чтобы выбрать на основе первой части названия атрибутов.

Смежные вопросы