По поводу чего Вы являетесь самыми взволнованными в новых версиях jQuery? [закрытый]

Недавняя новая версия jQuery была выпущена, jQuery v1.4. Можно считать все об этом здесь. Это позволяет Вам делать некоторый крутой материал, такой как:

$("div.test").bind({
  click: function(){
    $(this).addClass("active");
  },
  mouseenter: function(){
    $(this).addClass("inside");
  },
  mouseleave: function(){
    $(this).removeClass("inside");
  }
});

Что Вам нравится большинство об этой новой версии? Что является вещью, которая заставила Вас пойти "НАКОНЕЦ!"?


Добавленный щедрость, чтобы получить больше обратной связи и принять ответ

54
задан 6 revs, 4 users 73% 21 January 2010 в 01:28
поделиться

15 ответов

Лучшая функция, на мой взгляд, позволяет функционировать в больниц:

jQuery('li.selected').html(function(i, li) {
   return "<strong>" + li + "</strong>";
});

Много кода, требуемого $.

18
ответ дан 7 November 2019 в 07:36
поделиться

У меня на самом деле нет любимого, вот обзор 15 новых функций для тех, кто не знает, что это все о:

http: //net.tutsplus .com / Учебники / JavaScript-ajax / jquery-1-4 - выпущенные-15-новые возможности - вы должны знать /

18
ответ дан 7 November 2019 в 07:36
поделиться

Поверьте, или нет, «Наконец-то» момент для меня было добавлением задержки () :

$("#notice").slideDown('500').delay(4000).slideUp('500'); // = Pure awesome :)
58
ответ дан 7 November 2019 в 07:36
поделиться

Делегация событий для сосредоточечных и пузырьков событий:

6
ответ дан 7 November 2019 в 07:36
поделиться

Вы можете получить только издание (плюс в отдельных свойствах) с помощью SERVERPROPERTY

, например

SELECT SERVERPROPERTY('Edition')

Предложение (для «Edition»):

Установленная версия продукта экземпляра SQL Server. Использовать значение этого свойства для определения особенности и пределы, такие как максимальное количество ЦП, т. е. поддерживается установленным продуктом.
Возвращает значение
«» Desktop Engine «» (Не доступно для SQL Server 2005.)
'Developer Edition'
'Предприятие Корпоративная оценка выпуска '
' Выпуск '
' Личный выпуск '(не доступно для SQL Server 2005.)
'Standard Edition'
'Express Edition'
'Экспресс-выпуск с расширенными возможностями Службы '
' Workgroup Edition '
' Windows Встроенный SQL '
Базовый тип данных: nvarchar (128)

-121--957262-
<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, но сохраняет все назначенные ему обработчики, так что при повторной установке он будет работать в одном и том же пути.

Я думаю, что не так много чего я пропустил, но теперь, когда эти новые функции там, есть куча, которую я хочу начать использовать:)

6
ответ дан 7 November 2019 в 07:36
поделиться

Я помешан на скорости, так что любое улучшение скорости всегда приветствуется мной

.
17
ответ дан 7 November 2019 в 07:36
поделиться

Для меня это было так:

"Все события могут быть живыми"

"Мы очень гордимся тем, что можем посчитать несколько дополнительные события среди тех поддерживается функцией live(). 1.4 представления кросс-браузерная поддержка изменений, подчиняйтесь, фокусируйтесь, фокусируйтесь, мышиный центр, и мыши через событие делегации в прямом эфире."

Я ждал этого на мероприятии по переменам целую вечность!

12
ответ дан 7 November 2019 в 07:36
поделиться

Для меня это способность теперь писать обработчики событий с помощью AIVE Live () . Я знаю, что в последней версии присутствовал также в последней версии (1.3.2), но она не была полностью поддержана.

Это делает код бесконечно проще, особенно если у вас есть большая часть создаваемого на лету или через запросы AJAX.

Подробнее о в прямом эфире здесь : http://api.jquery.com/live/

2
ответ дан 7 November 2019 в 07:36
поделиться
-

Я думаю, что разгрузите () просто, элегантный, и вы получаете 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>
3
ответ дан 7 November 2019 в 07:36
поделиться

Позвони мне сумасшедшим, но только добавленное количество испытаний дает мне теплое нечеткое чувство. Я почти хочу упростить каждый ответ :) _

3
ответ дан 7 November 2019 в 07:36
поделиться

Мне очень нравится задержка () И отсоедините () больше всего, если честно. Улучшения производительности являются огромным плюсом, но задержка (), вероятно, самая удивительная часть этого. Простое, но ультра полезно. Больше нет поселей ().

4
ответ дан 7 November 2019 в 07:36
поделиться

Это было очень модульно с 1,3+. Например, когда вам не нужна библиотека Ajax, приятно построить без него. Держите размеры файлов вниз.

3
ответ дан 7 November 2019 в 07:36
поделиться
$.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();
3
ответ дан 7 November 2019 в 07:36
поделиться

Возможность создавать элементы на лету более кратким способом, передавая все атрибуты в качестве второго аргумента в 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().....

44
ответ дан 7 November 2019 в 07:36
поделиться

Это зависит от того, что вы имеете в виду под «primitive»

«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 и т. д.)

Почему последовательность не может изменяться как char []?

Для этого есть несколько причин, но в основном это сводится к психологии и деталям реализации:

  • Представьте себе хаос, который был бы у вас, если бы вы передали последовательность в другую функцию и эта функция каким-то образом изменила ее. Или что, если она где-то спасла и изменила в будущем? Для большинства ссылочных типов, вы принимаете это как часть типа, но разработчики Java решили, что, по крайней мере для последовательностей, они не хотят, чтобы пользователи должны беспокоиться об этом.
  • Последовательности не могут рассматриваться атомарно, что означает, что многопоточность/синхронизация могут стать проблемой.
  • Последовательности литералы (то, что вы помещаете в код в кавычках) могут быть неизменными на уровне компьютера 1 (по соображениям безопасности). Это может быть достигнуто путем копирования их всех в другую часть памяти при запуске программы или с помощью копирования при записи, но это медленно .

Почему у нас нет версии последовательности типа value?

В основном, детализация производительности и реализации, а также сложность наличия 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-

живые () вызовы с такими событиями, как изменение, являются для меня большими. Я хотел этого как-то сейчас.

2
ответ дан 7 November 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: