Вопрос

Я использую jQuery 1.3.2, и я пытаюсь выбрать некоторые элементы в элементе svg DOM.

$('svg > defs > lineargradient')

Однако по какой-то причине он не выбирает его, я знаю, что могу получить доступ к другим элементам в элементе <svg> , поскольку я успешно извлек $("svg > rect").

Мой SVG DOM выглядит следующим образом:

<svg width="975" height="385">
    <defs>
       <lineargradient id="raphael-gradient-0" x1="1.000" y1="1.000" x2="0.000" y2="0.000">
          <stop offset="0%" stop-color="#242b62"/><stop offset="9.090909090909092%" stop-color="#174a88"/>
          <stop offset="18.181818181818183%" stop-color="#0e60a3"/><stop offset="27.272727272727273%" stop-color="#0b66ab"/>
          <stop offset="36.36363636363637%" stop-color="#0870b7"/>
       ...
       </lineargradient>
       <lineargradient id="raphael-gradient-1" x1="1.000" y1="1.000" x2="0.000" y2="0.000">...</lineargradient>

    </defs>
    <circle cx="50" cy="40" r="10" fill="#ff0000" stroke="#000" transform=""/>
    <rect x="0" y="0" width="975" height="385" fill="url(#raphael-gradient-1)" stroke="none" transform="" style="opacity: 1;" opacity="1" fill-opacity="1"/>
</svg>

Есть ли какая-либо причина, по которой jQuery 1.3.2 не сможет выбрать <lineargradient> элементы?

Это было полезно?

Решение

alert($('svg lineargradient').length);

Рабочая демонстрация

Редактировать:

Похоже, что > непосредственное дочернее выражение не работает, но если вы укажете селектор без этого (если возможно), это нормально в Firefox (но нет Т.е.).Однако следующее работает в IE (протестировано в IE7)

alert($('lineargradient').length);

очевидно, что это приведет к выбору <lineargradient> элементы, которые вы хотите разместить на странице, немного сложнее, но такие команды, как slice() и eq() это позволит вам добраться до них по положению в упакованном наборе.

Написание ваших собственных фильтров для Шипение механизм выбора может дать желаемые результаты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top