我有一个按钮,可以创建一个新的引脚。那个引脚在div中。它还创建了一个隐藏的输入,以便在拖动时记录该引脚的位置。在我的创建Jquery代码中,我使用.data("my_id",pinNumber)
标记了引脚的div和输入。创建新引脚时,PinNumber会递增。这意味着带有新引脚的div和输入都有一个名为my_id的数据键具有相同的值。
当一个用户在一个引脚上点击删除时,我希望它删除与div相关的div和输入。这是我的删除代码。
$(".close").live("click", function() {
var this_id = $(this).parent("div").data("my_id");
$('div[data:my_id='+this_id+']').remove();
var this_id返回正确的引脚ID。但是我遇到了如何根据数据值而不是数据键选择元素的问题。
我该怎么做?如何选择所有元素或所有div或所有输入,无论数据值=指定值?我在说Jquery .data()
而不是HTML数据标签。
PS我正在使用live()
,因为这些引脚是在使用命中新引脚时创建的,因此当代码首次运行时DOM元素不存在。使用可以创建30个引脚。我需要一种方法,我认为data()
方法最适合用于连接pin div和创建的输入。此外,.draggable()
然后会使用相同的数据值向输入报告UI位置....需要帮助。
答案 0 :(得分:2)
您可以使用filter()并检查您指定的谓词中的数据值:
$("div, input").filter(function() {
return $(this).data("my_id") == this_id;
}).remove();
答案 1 :(得分:0)
var this_id = $(this).parent("div").data("my_id");
$('div').each(function() {
var this = $(this);
if(this.data("my_id") = this_id) {
this.remove();
}
});
这可能有用,尽管这是一个糟糕的例子。我认为.each表现不佳。