Должно быть что-то простое, которое я пропускаю. Я пытаюсь получить индекс элемента, но продолжать добираться-1.
HTML:
<div id="rating_boxes">
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
<img src="/img/ratingbox.gif" class="ratingbox" alt="Rate this Speech" />
</div>
jQuery:
$("img.ratingbox").hover(function() {
var index = $(this).parent().index(this);
// have also tried $("#rating_boxes").index(this);
// and $("#rating_boxes").index($(this));
// and $(this).parent().index($(this));
alert(index);
$(this).attr('src', '/img/ratingbox-selected.gif');
}, function() {
$(this).attr('src', '/img/ratingbox.gif');
});
Рассмотрим одну из функций с открытым исходным кодом. Если вы хотите узнать, как он развернут, загрузите пару подобных проектов с открытым исходным кодом и узнайте из них. Итак, найдите то, что сделано, как у вас, и изучите его источники.
Почему это должно помочь? Дело в том, что проекты с открытым исходным кодом должны иметь возможность легко строить на машинах пользователей . Иначе никто не сможет внести в них свой вклад. Поэтому вся необходимая информация о способах их развертывания обычно включается в файлы INSTALL
или РИДМИ
в загруженных источниках. Обычно они состоят из нескольких простых шагов. Для этой же цели проверка доступности и версий предпосылок автоматизирована (в настроить
скрипты), и иногда такие скрипты даже помогают в их установке.
Обычно ожидается что-то вроде
# Download sources (this line is read from your website)
wget http://myapp.org/myapp-source-2.15.tgz
tar -xzf myapp-source-2.15.tgz
cd myapp-2.15
less INSTALL
# read INSTALL file, where instructions about installing prerequisites are
./configure --help
# Read help, learn about possible options
./configure --prefix=/install/here --without-sound
make
make install
В настоящее время некоторые приложения используют cmake вместо autotools (файл со сценарием configure
).
Я сомневаюсь, что проекты Linux на самом деле требуют NetBeans в качестве системы сборки - это было бы перебором. Но эта IDE, кажется, генерирует makefile, поэтому отправляйте их. Для удобства можно также зафиксировать файлы проектов, специфичные для среды IDE, в репозитории, но это не должно быть основным способом построения программного обеспечения.
Есть еще несколько вещей, которые пользователи ожидают найти в вашем пакете:
LICENSE
и в начале каждого исходного файла)Будучи ленивым я не проверял это, но не должен ли этот труд
private int FindClosest(IEnumerable<int> numbers, int x)
{
return
numbers.Aggregate((r,n) => Math.Abs(r-x) > Math.Abs(n-x) ? n
: Math.Abs(r-x) < Math.Abs(n-x) ? r
: r < x ? n : r);
}
-121--3853861- Я склонен избегать использования индекса ()
в jQuery 1.3.2 и более ранних версиях, так как он не подходит для использования. Я просто использую
$(this).prevAll().length
, чтобы получить индекс. вызов size ()
для prevAll ()
просто возвращает значение свойства length
, поэтому я предпочитаю использовать длину напрямую и пропустить вызов дополнительной функции.
Например,
$("img.ratingbox").hover(function() {
var index = $(this).prevAll().length;
alert(index);
$(this).attr('src', '/img/ratingbox-selected.gif');
}, function() {
$(this).attr('src', '/img/ratingbox.gif');
});
В jQuery 1.4 можно просто вызвать index ()
для объекта jQuery, чтобы получить индекс первого элемента в объекте.
index()
возвращает индекс данного элемента со списком элементов, не входящих в состав родительского элемента. Чтобы найти индекс кликнувшего изображения, необходимо найти все изображения, а не parent из всех изображений.
Вы хотите что-то подобное:
// Find all the images in our parent, and then find our index with that set of images
var index = $(this).parent().find("img").index(this);
Вы также используете селектор id вместо селектора класса во 2-м примере. Вместо
$("#rating_boxes").index($(this)); // your way - select by ID
Вы хотите
$(".rating_boxes").index(this); // select by class
Если Вы хотите знать положение поля рейтинга, более надежным способом будет использование:
var index = $(this).prevAll('img').size();
т.е. вычислить количество элементов img перед этим элементом. Метод индекса требует, чтобы вы сначала выбрали родительский элемент, а затем все элементы img внутри. Это немного быстрее.