Недавняя новая версия jQuery была выпущена, jQuery v1.4. Можно считать все об этом здесь. Это позволяет Вам делать некоторый крутой материал, такой как:
$("div.test").bind({
click: function(){
$(this).addClass("active");
},
mouseenter: function(){
$(this).addClass("inside");
},
mouseleave: function(){
$(this).removeClass("inside");
}
});
Что Вам нравится большинство об этой новой версии? Что является вещью, которая заставила Вас пойти "НАКОНЕЦ!"?
Добавленный щедрость, чтобы получить больше обратной связи и принять ответ
Лучшая функция, на мой взгляд, позволяет функционировать в больниц:
jQuery('li.selected').html(function(i, li) {
return "<strong>" + li + "</strong>";
});
Много кода, требуемого $.
У меня на самом деле нет любимого, вот обзор 15 новых функций для тех, кто не знает, что это все о:
Поверьте, или нет, «Наконец-то» момент для меня было добавлением задержки ()
:
$("#notice").slideDown('500').delay(4000).slideUp('500'); // = Pure awesome :)
Делегация событий для сосредоточечных и пузырьков событий:
Вы можете получить только издание (плюс в отдельных свойствах) с помощью SERVERPROPERTY
, например
SELECT SERVERPROPERTY('Edition')
Предложение (для «Edition»):
-121--957262-Установленная версия продукта экземпляра SQL Server. Использовать значение этого свойства для определения особенности и пределы, такие как максимальное количество ЦП, т. е. поддерживается установленным продуктом.
Возвращает значение
«» Desktop Engine «» (Не доступно для SQL Server 2005.)
'Developer Edition'
'Предприятие Корпоративная оценка выпуска '
' Выпуск '
' Личный выпуск '(не доступно для SQL Server 2005.)
'Standard Edition'
'Express Edition'
'Экспресс-выпуск с расширенными возможностями Службы '
' Workgroup Edition '
' Windows Встроенный SQL '
Базовый тип данных: nvarchar (128)
<script language="JavaScript" type="text/javascript">
<!--
function loopSelected()
{
var txtSelectedValuesObj = document.getElementById('txtSelectedValues');
var selectedArray = new Array();
var selObj = document.getElementById('selSeaShells');
var i;
var count = 0;
for (i=0; i<selObj.options.length; i++) {
if (selObj.options[i].selected) {
selectedArray[count] = selObj.options[i].value;
count++;
}
}
txtSelectedValuesObj.value = selectedArray;
}
function openInNewWindow(frm)
{
// open a blank window
var aWindow = window.open('', 'Tutorial004NewWindow',
'scrollbars=yes,menubar=yes,resizable=yes,toolbar=no,width=400,height=400');
// set the target to the blank window
frm.target = 'Tutorial004NewWindow';
// submit
frm.submit();
}
//-->
</script>
The HTML
<form action="tutorial004_nw.html" method="get">
<table border="1" cellpadding="10" cellspacing="0">
<tr>
<td valign="top">
<input type="button" value="Submit" onclick="openInNewWindow(this.form);" />
<input type="button" value="Loop Selected" onclick="loopSelected();" />
<br />
<select name="selSea" id="selSeaShells" size="5" multiple="multiple">
<option value="val0" selected>sea zero</option>
<option value="val1">sea one</option>
<option value="val2">sea two</option>
<option value="val3">sea three</option>
<option value="val4">sea four</option>
</select>
</td>
<td valign="top">
<input type="text" id="txtSelectedValues" />
selected array
</td>
</tr>
</table>
</form>
-121--1677235- Ну, улучшения производительности, конечно, то, что я ценю, но я не могу сказать, что это «наконец», поскольку это то, что подлежит постоянному улучшению:) Синтаксис DOM-building (Quick Element Construction) выглядит очень удобным, а метод detach
- вполне удобным: он позволяет временно удалить объект из DOM, но сохраняет все назначенные ему обработчики, так что при повторной установке он будет работать в одном и том же пути.
Я думаю, что не так много чего я пропустил, но теперь, когда эти новые функции там, есть куча, которую я хочу начать использовать:)
Я помешан на скорости, так что любое улучшение скорости всегда приветствуется мной
.Для меня это было так:
"Все события могут быть живыми"
"Мы очень гордимся тем, что можем посчитать несколько дополнительные события среди тех поддерживается функцией live(). 1.4 представления кросс-браузерная поддержка изменений, подчиняйтесь, фокусируйтесь, фокусируйтесь, мышиный центр, и мыши через событие делегации в прямом эфире."
Я ждал этого на мероприятии по переменам целую вечность!
Для меня это способность теперь писать обработчики событий с помощью AIVE Live ()
. Я знаю, что в последней версии присутствовал
также в последней версии (1.3.2), но она не была полностью поддержана.
Это делает код бесконечно проще, особенно если у вас есть большая часть создаваемого на лету или через запросы AJAX.
Подробнее о в прямом эфире
здесь : http://api.jquery.com/live/
Я думаю, что разгрузите () просто, элегантный, и вы получаете InnerHTML, присутствующие в конце!
Новый метод развертывания примет дети данного родителя и заменить сказал родителен с ними. Вроде так:
<body>
<div>
<p>this</p> <p>is</p> <p>fun</p>
</div>
</body>
$('div').unwrap();
<body>
<p>this</p> <p>is</p> <p>fun</p>
</body>
Позвони мне сумасшедшим, но только добавленное количество испытаний дает мне теплое нечеткое чувство. Я почти хочу упростить каждый ответ :) _
Мне очень нравится задержка () И отсоедините () больше всего, если честно. Улучшения производительности являются огромным плюсом, но задержка (), вероятно, самая удивительная часть этого. Простое, но ультра полезно. Больше нет поселей ().
Это было очень модульно с 1,3+. Например, когда вам не нужна библиотека Ajax, приятно построить без него. Держите размеры файлов вниз.
$.proxy()
, чтобы убедиться, что это всегда означает это , а не , что ...
Пример здесь
MyModule = function() {
this.$div = $('#testdiv');
this.myString = "Hi! I'm an object property!";
this.$div.click($.proxy(this.handleClick, this));
};
MyModule.prototype.handleClick = function() {
console.log(this.myString); // Hi! I'm an object property!
};
var m = new MyModule();
Возможность создавать элементы на лету более кратким способом, передавая все атрибуты в качестве второго аргумента в jQuery()
:
jQuery('<div/>', {
id: 'foo',
mouseenter: function() {
// do stuff
},
html: jQuery('<a/>', {
href: 'http://google.com',
click: function() {
// do stuff
}
})
});
Все свойства, не относящиеся к атрибутам, сопоставляются соответствующему методу jQuery. Таким образом, если html
вызовет .html()
и если click
свяжет новое событие click
с помощью .click()
.....
«Primitive» в Java обычно принимают за «value type». Однако C # имеет ключевое слово последовательностей
, которое действует точно так же, как и Последовательность Java, оно просто выделяется редактором по-разному. Они являются псевдонимами для классов System. Последовательность
или java.lang. Последовательность
. Последовательность не является типом значения ни на одном языке, поэтому таким образом она не является примитивом.
Если под «примитивом» подразумевается встроенный в язык, то последовательность является примитивом. Просто используется заглавная буква. Строковые литералы (в кавычках) автоматически преобразуются в System.String
и + используется для конкатенации. Таким образом, они (и Массивы) являются такими же примитивными, как ints, longs и т. д.
Последовательность не является оберткой. Последовательность - это ссылочный тип , а примитивные типы - типы значений . Это означает, что если у вас есть:
int x = 5;
int y = x;
Память x и y оба содержат «5». Но с:
String x = "a";
String y = x;
Память x и y оба содержат указатель на символ «a» (и длину, смещение, указатель ClassInfo и монитор). Последовательности ведут себя как примитив, потому что они незыблемы, поэтому обычно это не проблема, однако если вы, скажем, использовали отражение, чтобы изменить содержимое последовательности ( не делать этого! ), как x, так и y увидят изменение. На самом деле, если у вас есть:
char[] x = "a".toCharArray();
char[] y = x;
x[0] = 'b';
System.out.println(y[0] == 'b'); // prints "true"
Так что не просто использовать char [] (если это не поведение вы хотите, или вы действительно пытаетесь уменьшить использование памяти).
Каждый объект
является ссылочным типом - это означает все записываемые классы, каждый класс в рамку и даже массивы. Единственными вещами, которые являются ценностными типами, являются простые числовые типы (int, long, short, byte, float, double, char, bool и т. д.)
Для этого есть несколько причин, но в основном это сводится к психологии и деталям реализации:
В основном, детализация производительности и реализации, а также сложность наличия 2 различных типов последовательностей. Другие типы значений имеют фиксированный объем памяти.Int - это всегда 32 бит, long - это всегда 64 бит, bool - это всегда 1 бит и т. д. 2 Помимо прочего, это означает, что они могут храниться в стеке, так что все параметры функции живут в одном месте. Кроме того, создание гигантских копий последовательностей по всему месту может убить производительность.
См. также: Почему в C # последовательность является ссылочным типом, который ведет себя как тип значения? . Относится к .NET, но это так же применимо в Java.
1 - В C/C + + и других самокомпилируемых языках это верно, потому что они помещаются в сегмент кода процесса, который ОС обычно останавливает редактирование. В Java это на самом деле обычно не соответствует действительности, так как JVM загружает файлы классов в кучу, чтобы там можно было редактировать последовательность. Однако нет причин, по которым Java-программа не может быть скомпилирована (есть инструменты, которые делают это), и некоторые архитектуры (особенно некоторые версии ARM) выполняют непосредственно байт-код Java.
2 - На практике некоторые из этих типов имеют различный размер на уровне машины. E.x. буллы хранятся в стеке как WORD-size (32 бита на x86, 64 бита на x64). В классах/массивах они могут обрабатываться по-разному. Это все детали реализации, которые остались до JVM - спецификация говорит, что булы являются либо истинными, либо ложными, и машина может выяснить, как это сделать.
-121--1706242-В окнах необходимо получить доступ к идентификатору необработанного устройства в виде файла. Он должен работать, если вы передаете файл «\\.\c: », вы используете UNC-имя устройства\.\c: (\. означает эту машину).
Для Vista и более поздних версий я не думаю, что это будет работать правильно, так как существуют механизмы для предотвращения необработанного доступа к диску для чего-либо, кроме драйверов устройств (не цитируйте меня на этом)
-121--2313435-живые () вызовы с такими событиями, как изменение, являются для меня большими. Я хотел этого как-то сейчас.