/ / Jquery: $ ('<div>', {sort: x}) не работи; Какъв е атрибутът "сортиране"? - jquery, dom, атрибути

Jquery: $ ('<div>', {sort: x}) не работи; Какъв е атрибутът "сортиране"? - jquery, dom, атрибути

Когато се опитвам да създам <div sort="xx">

чрез тази функция:

$("<div>",{sort:x})

jQuery пренебрегва параметъра "sort" и получава <div> само. Когато го направя по атрибутна настройка fn:.attr("sort","xxx") е добре. Защо се случва това?

P / S: Друг атрибут работи добре, е причината, поради която промених тези, за да "сортира", но какъв е атрибутът "sort" за? (Не използвам jQueryUI)

Отговори:

1 за отговор № 1

Това е така, защото jQuery проверява дали имаметодът за конкретен собственост или не, ако има съответния метод, той нарича този метод с определената стойност, в противен случай той определя стойността, използвайки .attr() метод. Във вашия случай, тъй като той има sort методът нарича функцията с определената стойност и не указва свойството .attr() метод.

// For internal use only.
// Behaves like an Array"s method, not like a jQuery method.
push: push,
sort: arr.sort,
splice: arr.splice

// ...

// HANDLE: $(html, props)
if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
for ( match in context ) {
// Properties of context are called as methods if possible
if ( jQuery.isFunction( this[ match ] ) ) {
this[ match ]( context[ match ] );

// ...and otherwise set as attributes
} else {
this.attr( match, context[ match ] );
}
}
}

0 за отговор № 2

Това вероятно няма да работи, защото няма атрибут HTML sort, jQuery вероятно минава през списък с валидниHTML атрибути и добавя само тези в списъка. Поради това атрибутът ви за сортиране се игнорира. Ако искате да съхранявате данни в div, можете да зададете или data-sort атрибут, чрез:

$("<div>", {"data-sort":x});

или просто да зададете свойството за данни чрез jQuery .data() метод, който не изисква промени в атрибутите:

$("<div>").data("sort", x);