2009-07-18 1 views
0

Я получил код, как это на моей странице:загрузки страницы в соответствии с именами классов

<div class="item item_wall id1"></div> 
<div class="item item_wall id2"></div> 
<div class="item item_wall id3"></div> 
<div class="item item_wall id4"></div> 
<div class="item item_wall id5"></div> 

Я хочу что-то в JQuery, так что, когда DIV с классом «пункта» нажата, она будет загружать другой div от страницы, имя файла страницы будет зависеть от щелчка div. Предпочтительно я хотел бы, чтобы нагрузка:?

something.php типа = item_wall & ID = ID1

На будущее это то, что я закончил с:

<div id="itemstable" class="item_love"> 
    <div class="id1"></div> 
    <div class="id2"></div> 
    <div class="id3"></div> 
    <div class="id4"></div> 
    <div class="id5"></div> 
    <div class="id6"></div> 
</div> 

JQuery :

<script> 
$("#itemstable div").click(function(){ 
    var url = "something.php?type=" + $(this).parent().attr("class") + "id=" + $(this).attr("class"); 
    alert(url); 
}); 
</script> 
+0

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

+0

Я использовал атрибут класса, потому что каждый из этих классов получает к нему некоторый css. «item» устанавливает ширину/высоту, «item_wall» устанавливает фоновое изображение, «id *» устанавливает положение фона. – Hintswen

+0

ни один из них не является технически приемлемым ответом, поэтому я не согласен с ним, но оба они мне помогли. Спасибо Adrian Godong – Hintswen

ответ

1

Ответ Эхо-Спенсера-Рупора, вы можете сделать это проще при использовании jQuery для использования пользовательских атрибутов, отличных от класса.

Например, ваш DIV может выглядеть следующим образом:

<div class="item" type="item_wall" id="1"></div> 

Вы можете легко создать селектор JQuery и событие, как следующее:

$(".item").click(function() { 
    var url = "something.php?type=" + $(this).attr("type"); 
    windows.location = url; 
}); 

Конечно, не забудьте проверить действительность, никогда не доверяют пользовательскому вводу (ваш HTML может быть переписан злоумышленником).

+0

, если я добавлю специальные атрибуты, не означает ли это, что мой код не будет проверять? также вы не можете применить css к ним, поэтому мне нужно будет повторить тип и идентификатор, все 3 класса получат некоторый css, применяемый к ним. item = width и height, type = какой файл использовать в качестве фона, id = положение фона, чтобы он использовал правильное изображение. – Hintswen

+0

Если вы настаиваете на действительном документе XHTML, вы можете придерживаться своего объявления класса и использовать строковые манипуляции для анализа ваших «переменных». Или вы можете создать несколько дочерних DIV/SPAN с отображением: none, но содержит значение (ala XML). В любом случае, это просто больше работы. –

+0

aah right, ну, я думаю, мне не нужен мой код для проверки, просто подумал, что было бы хорошо ... Как насчет проблемы css? Как я могу это сделать, не повторяя тип и идентификатор? – Hintswen

2

Для действительного документа XHTML самым простым является добавление невидимого дочернего DIV в ваш основной DIV. Например:

<div class="item"> 
    <div class="variable type">item_wall</div> 
    <div class="variable id">1</div> 
</div> 

Вы можете найти «пользовательский атрибут» с помощью .find(). Например:

$(".item").click(function() { 
    var type = $(this).find(".type").val(); 
    var url = "something.php?type=" + type; 
    windows.location = url; 
}); 

Немного мнения: следует избегать смешивания данных с пользовательским интерфейсом.

+0

Спасибо за всю помощь/код. Думаю, я поеду с другим решением и просто включу тип и идентификатор дважды (один раз в классе, в другое время - как пользовательские атрибуты).Я пытаюсь сохранить мой код как можно меньше, поэтому я не собираюсь использовать этот вариант. Я на самом деле просто подумал о применении классов «item» и «item_wall» к родительскому div вместо этого, сохраняя мне много места в моем коде, затем я буду использовать css для установки ширины дочерних div. Никогда не пробовал это раньше, но я предполагаю, что это сработает ... – Hintswen

Смежные вопросы