2013-03-07 5 views
0
$(function(){ 
    var z = document.body.children[0]; 
    var x=$("li", z); 
    x.name="Johnny"; 
    alert(x.prop(name)); 
}); 
  1. x должен быть объект, содержащий все элементы в пределах первой ul в body. Независимо от того, что содержит этот объект, я хотел бы добавить свойство со значением, а затем использовать метод prop(), чтобы показать его, но это, похоже, не работает. Почему это?объекты Редактирование в JQuery

  2. Я видел сценарий, содержащий следующее: var $x = $("div"); - Нужно ли добавлять $ к имени переменной, если это объект jQuery?

+2

ответить на вопрос 2 просто, нет, вам не нужно это делать. это помогает некоторым людям следить за тем, что это объект jquery – musefan

ответ

1

Чтобы выбрать первый уль элемент внутри страницы вы можете сделать:

$("ul:first li") 

Таким образом, вы собираетесь выбрать все строки внутри первого списка на странице.

Для хранения произвольных данных в элементе можно использовать данные метод, например:

$("element").data('key', 'value'); 

и для извлечения данных:

$("element").data('key'); 

More info, for the data method.

Если вы действительно хотите для добавления атрибута вы можете использовать метод attr, он работает так же, как метод данных, но он будет отображаться в DOM.

0

Номер 1. x является объектом JQuery, вы добавили к этому экземпляру с name свойства, то вы используете name, хотя она не была определена.

Если вы хотите изменить свойство элемента, который вы получили с JQuery пути не являются:

$('selector').prop('property', 'value'); 
$('selector').attr('attribute', 'value'); 
$('selector').get(index).property = "value"; 

Номер 2. Нет, ты не должен, $ префикс просто условность, чтобы сделать код более читаемым.
Is there any specific reason behind using $ with variable in jQuery

1

Если вы хотите, чтобы все li элементов первого ul элемента, то это следует сделать трюк:

Here is a very simple example of this in action.


В отношении установки свойства, вы можете do element.name = "test", и он будет работать нормально. Но вам нужно понять, что это свойство name в объекте коллекции jQuery и НЕ на любом из реальных элементов.

Что вы можете сделать, однако, установить свойство следующим образом:

elements.prop("name", "test"); 

и доступ к нему так:

var name = elements.prop("name");//name will be "test" 

Here is a working example


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

0

Используя селектор из ответа @musefan, вы можете взять возвращенную коллекцию и использовать метод attr() для добавления атрибута и значения к каждому выбранному элементу. Тем не менее, я немного изменил свой селектор, чтобы фактически захватить «все» элементы есть, (только в случае, если будущие туристы недоумевают)

var elements = $("ul:eq(0)").children(); 
elements.attr("attrName", value); 

Так что, если вы хотите установить название:

var elements = $("ul:eq(0)").children(); 
elements.attr("title", "Johnny"); 

Вероятно, вы не хотите уведомлять эти значения, браузеры могут попросить вас прекратить выдавать предупреждения на странице ... но если вы действительно это сделали, то после этого вы можете добавить .each().

var elements = $("ul:eq(0)").children(); 
elements.attr("title", "Johnny").each(function(){ 
    alert($(this).attr("title"); 
}); 
Смежные вопросы