Очень трудно понять, о чем ты спрашиваешь. Это звучит , как будто вы спрашиваете, как реагировать на клики по разным ссылкам «свойств» разных классов, открывая разные диалоговые окна. Это было бы тривиально: просто подключите событие click к соответствующим ссылкам "свойств", используя bind
(click
), delegate
или live
:
$("a.type1").click(function() {
// Open the dialog for type1
// ...
// Prevent the default action of the link
return false;
});
$("a.type2").click(function() {
// Open the dialog for type2
// ...
// Prevent the default action of the link
});
(И снова, вы можете использовать delegate
или live
вместо привязки события к самим элементам, если оно вообще динамическое.)
Или, если вы хотите использовать общий обработчик для всех типов и ветвей в обработчике, вы можете сделать это:
$("a.type1, a.type2, a.type3").click(function() {
// ...code all of them have in common...
// ...
// Branch on what class(es) the link has and open the relevant dialog
// ...
// ...more code all of them have in common...
// ...
// Prevent the default action of the link
return false;
});
Вы можете использовать несколько классов (поэтому каждая ссылка имеет как "props", так и "type1" или "type2" и т. Д.)
Если вы имеете в виду, что ссылки не будут на самом деле имеют разные типы, но вы хотите перейти к тому, что находится в том же контейнере, или к чему-либо, вы можете использовать closest
, чтобы перейти контейнер, который вы хотите, затем find
и / или children
, чтобы узнать, что находится в контейнере:
$("a.props").click(function() {
var container = $(this).closest('div'); // If the container is a div
if (container.find("textarea")[0]) {
// It has at least one text area, show dialog...
}
else if (container.find("input[type=text]")[0]) {
// It has at least one text input, show dialog...
}
else if (container.find("input[type=button]")[0]) {
// It has at least one `input`-style button, show dialog...
}
// else etc.
// Prevent the default action of the link
return false;
});