2009-11-04 3 views
1

Не уверен, что это можно сделать, как я приближаюсь к нему. Тут ничего не происходит. Я повторяю изображения из сценария загрузки php, каждый img имеет уникальный идентификатор, который начинается с A1, A2, A3, A4 и так далее. Теперь я могу выбрать «Идентификатор img» и создать действие, которое я хочу, однако я должен сделать это для каждого идентификатора, я не смогу это сделать, поскольку будут созданы новые. Как бы я сказал jQuery сделать то же самое с A1 (A2, A3) Какой-то Приращение.jQuery ID Выбор динамический

JS

$(document).ready(function(){ 
    $("#1 ").hover(
    function(){ 
    $("#A1").slideDown(); 
    }, 

    function(){ 
    $("#A1").slideUp(); 
    }); 
}); 

$(document).ready(function(){ 
    $("#2 ").hover(

    function(){ 
    $("#A2").slideDown(); 
    }, 
    function(){ 
    $("#A2").slideUp(); 
    }); 
}); 

PHP

$i= 0; while(($file = $myDir->read()) !==false){ 
    if(!is_dir($file)){ 
    $i++; 
    //echo "Filename: $file<br/>"; 
    echo "<div id='images'>"; 
    echo "<p>"; 
    echo "<a id='$i'href=\"display/$file\"><img src=\"thumbs/$file\" /> </a>\n"; 
    echo "</p>"; 
    echo"</div>"; 
    echo "<div id='imageHolder' >"; 
    echo "<img id='A$i' style='display:none' src=\"display/$file\" />"; 
    echo"</div>"; 
    } 
} 
+0

Каких элементов являются вашими «# 1» и № 2 "элементы Какова ваша HTML структуры (являемся? изображения внутри ваших # 1 и # 2 элементов?)? Загружаете ли вы новые изображения через ajax или только при начальной загрузке? – Aaron

+0

Элементы # 1 # 2 являются привязными тегами, я добавил свой html/php, что бы я хотел сделать имеет тот же прирост числа для элементов, которые я выбираю, поэтому мне не нужно писать каждый из них, когда я добавляю новый с помощью сценария загрузки. –

+0

Я бы порекомендовал осторожность с тем, чтобы идентификаторы начинались с числа, вы можете столкнуться с трудности в определенных ситуациях с certai n браузеров. Вот кто-то другой по этому поводу: http://css-tricks.com/ids-cannot-start-with-a-number/ – Funka

ответ

2

Как ваши новинки были сгенерированы? На загрузке страницы, или вы используете запрос ajax через jQuery? В любом случае, вы можете выбрать все элементы, которые начинаются с некоторого значения (например, «A») таким образом:

$("a").hover(
    function(){ 
     $(this).find(img[id^='A']).slideDown(); 
    }, 
    function(){ 
     $(this).find(img[id^='A']).slideUp(); 
}); 

Кто-то не стесняйтесь, чтобы помочь мне, если я уезжаю здесь.

UPDATE

Спасибо, ребята - А что-то вроде этого?

$("a").hover(
    function(){ 
     id = $(this).attr('id'); 
     $("#A"+id).slideDown(); 
    }, 
    function(){ 
     id = $(this).attr('id'); 
     $("#A"+id).slideUp(); 
}); 

Это ищет все ссылки на странице и использует идентификатор (для вашего кода) для поиска элементов слайда. Если вы создаете их динамически, вы захотите включить это внутри функции и снова вызвать его на ajaxComplete.

+0

Это будет работать, однако они выполняют разные действия для каждого уникального погружения. Они показывают что-то другое при наведении. Этот способ показывает их все сразу. –

+0

Ваш селектор верен, но я не думаю, что это поможет. Ему нужно уловить событие, которое происходит, когда изображение добавляется на страницу, чтобы добавить к нему событие зависания. Ваш пример будет анимировать все изображения в событии зависания; Я думаю, он просто хочет, чтобы изображение было зависшим от оживления. – Tmdean

+0

Да Да Да, это работает –

1

Я бы яваскрипта массив, который содержит все идентификаторы объектов. Затем вы можете просто пройти через массив, и для каждого id выполните работу, которую вы хотите сделать.

+0

Я немного смущен, как это будет выглядеть, я не сделал массивы в javascript. –

0

Используйте jQuery.live() для «постоянных» обработчиков событий (если вы динамически добавляете изображения на страницу) или используйте jQuery.each() для итерации по всем экземплярам.

В конце концов, это будет что-то вроде этого (без использования живых событий):

$("a:has(img.my_image)").each(function(){ 
    $(this).hover(
     function(){$(this).slideDown();}, 
     function(){$(this).slideUp();} 
    ); 
}); 
Смежные вопросы