我有这个jsfiddle http://jsfiddle.net/DgauY/1/ 在“内容”区域中删除元素时会添加两个项目。一个X元素删除被删除的元素和其他属性链接。我想要实现的是在单击相应的属性链接时打开不同的对话框形式,该链接具有基于其包含的元素的类。 就像我删除一个文本框,然后查看属性类,这是txtbox当我点击属性我应该有一个对话框形式,其中包含与文本框相关的选项,如标签等... 我希望我不要混淆......
答案 0 :(得分:0)
很难弄清楚你在问什么。它听起来像,好像你正在询问如何通过打开不同的对话框来响应不同类别的不同“属性”链接上的点击。这将是微不足道的:只需使用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;
});