Могу ли я запросить подстановочные знаки ключа атрибута в jQuery? - PullRequest
0 голосов
/ 28 октября 2010

Я бы хотел выбрать элементы с именами атрибутов (ключами), которые начинаются с заданной строки.Вариант использования: диалоговое окно jQuery UI создает кнопки, единственными уникальными идентификаторами которых являются псевдослучайный пользовательский атрибут с последовательным значением, таким как jQuery1288273859637="40"

, который я хочу выбрать на основетот факт, что атрибут name является jQuery * (начинается с jQuery)

Ответы [ 3 ]

2 голосов
/ 28 октября 2010

Единственное, о чем я мог подумать, - это проверить отдельные ключи каждого элемента DOM в .filter().

Это было бы ужасно неэффективно, но если бы вы действительно этого хотели, это могло бы выглядеть примерно так:

$('body *').filter(function() {
    for( var k in this ) {
        if( this.hasOwnProperty(k) && k.indexOf( "jQuery" ) === 0 ) {
            return true;
        }
    }
    return false;
});

Это зацикливает все элементов в <body>, а затем циклически перебирает свойства ключа / значения каждого, проверяя каждый ключ, чтобы увидеть, начинается ли он с "jQuery". Если это так, он возвращает true, и цикл прерывается. Если нет, то возвращается false после того, как все свойства были протестированы.

Я бы нашел другой способ. Серьезно, не делай этого.

0 голосов
/ 28 октября 2010

Атрибут, который вы просматриваете, - это расширение jQuery ... было бы совершенно бесполезно указывать эти атрибуты, так как число после "jQuery" основывается на текущем времени и изменяется при каждой перезагрузке страницы ( ref1 & ref2 ).

Лучше всего настроить таргетинг на класс в вашем базовом HTML.Например, диалоговое окно jQuery UI должно иметь следующий базовый HTML ( ref ):

<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable">
   <div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
      <span id="ui-dialog-title-dialog" class="ui-dialog-title">Dialog title</span>
      <a class="ui-dialog-titlebar-close ui-corner-all" href="#"><span class="ui-icon ui-icon-closethick">close</span></a>
   </div>
   <div style="height: 200px; min-height: 109px; width: auto;" class="ui-dialog-content ui-widget-content" id="dialog">
      <p>Dialog content goes here.</p>
   </div>
</div>

Найдите идентификатор или класс, на который вы хотите настроить таргетинг, и используйте его вместо этого!

Если вам нужно нацелиться на кнопку в диалоговом окне, используйте что-то вроде этого:

$('.ui-dialog .ui-button:contains("Cancel")')
0 голосов
/ 28 октября 2010

Получить ссылку на диалоговое окно, а затем использовать селектор CSS, чтобы найти кнопку. Firebug (или инструменты разработчика Google Chrome) полезны для определения того, что искать.

...