2013-06-05 3 views
0

Когда я создаю элемент JQuery UI (кнопки, например), я делаю это так:Установить параметры в атрибуте элемента?

<button class="Button" data-options='{ "text": false, "icons": { "primary": "ui-icon-arrowthick-1-n" } }'>Move Up</Button> 

У меня есть некоторые JS, который ищет что-нибудь, что является .Button и извлекает атрибут data-options как JSON, а затем создает кнопка, передающая параметры.

Мне интересно, имеет ли пользовательский интерфейс jQuery встроенную функцию для этого? Например, я хотел бы, чтобы иметь возможность установить параметры на кнопках в пределах Buttonset, поставив параметры в атрибуте на каждой кнопке ребенка:

<div class="Buttonset"> 
    <input type="radio" id="SortDirection_Ascending" name="SortDirection" value="Ascending" /> 
    <label for="SortDirection_Ascending" title="Ascending" data-options='{ "text": false, "icons": { "primary": "ui-icon-arrowthick-1-n" } }'>&nbsp;</label> 
    <input type="radio" id="SortDirection_Descending" name="SortDirection" value="Descending" /> 
    <label for="SortDirection_Descending" title="Descending" data-options='{ "text": false, "icons": { "primary": "ui-icon-arrowthick-1-s" } }'>&nbsp;</label> 
</div> 

Но JQuery не знает, чтобы применить параметры. Я мог бы сделать это в JS, как с кнопками (и другими виджетами). Но мне любопытно, если это уже поддерживается с другим атрибутом.

Для уточнения:

Когда я создаю виджет, я хочу знать, если JQuery может автоматически извлекать параметры виджета из атрибута элемента и применить их к виджету.

<button class="Button" data-options='{ "text": false, "icons": { "primary": "ui-icon-arrowthick-1-n" } }'>Move Up</Button> 

<script type="text/javascript"> 
    $(".Button").button(); 
    /* jQuery saw that this element has a "data-options" attribute and automatically 
    * extracted the options from this attribute and applied them to the widget. */ 
</script> 
+2

Все еще ваш вопрос непонятен. Да, вы сможете получить к ним доступ, как JSON. :) –

+0

Ваши заметки «У меня есть JS, который ищет что-нибудь, что есть .Button» и «Я не могу сделать это для Buttonset», кажется противоречивым. Можете ли вы объяснить, почему вы не можете сделать это для div? –

+0

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

ответ

0

data() функция JQuery выполнен для прикрепления данных в DOM элемента: http://api.jquery.com/jQuery.data/

$(".Button").data('options') 

Это извлекает данные из элемента HTML

http://jsfiddle.net/a5sVM/1/

+0

Это не отвечает на мой вопрос, я не думаю. –

+0

«Я хочу знать, может ли jQuery автоматически добавлять параметры виджета из атрибута элемента». Это именно то, что делают данные, см. Мой обновленный ответ. – Antoine

+0

Правильно ... см. Мой обновленный вопрос для разъяснения.Также прочитайте ответ dremme - они получили то, что я просил. Благодарю. –

1

Существует не атрибут в элементе DOM, который вы можете установить для этого. Вам придется либо использовать метод, который вы уже используете, либо задать параметры при вызове метода jquery ui .button() на кнопке. Например:

$('button').button({ 
    icons: { 
    primary: "ui-icon-locked" 
    } 
}); 

Единственный способ будет вручную включать классы и структуры, JQuery-щ делает после того, как вы называете .button(). Например:

<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button" aria-disabled="false"> 
    <span class="ui-button-icon-primary ui-icon ui-icon-locked"></span> 
    <span class="ui-button-text">Button with icon on the left</span> 
</button> 
+0

Благодарим вас за понимание мой вопрос. Это все, что мне нужно было знать (что было невозможно с помощью встроенных функций). –

+0

Чтобы уточнить, эта функция еще не встроена в jquery-ui, но, похоже, вы уже создали необходимую функциональность! :) – dremme

+0

Да, я просто не хотел переписывать вещи, которые уже существуют. –

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