Когато се опитвам да създам <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);