【发布时间】:2016-04-29 01:19:27
【问题描述】:
我创建了一个创建 HTML 代码块的函数。它的 id 是使用从表单收集的标记变量动态创建的。代码:
$(function() {
$("#addTag").click(function() {
var tag = $("#tag").val();
$('section').append('<div id="galleryContainer' + tag + '"><div class=".gallery-header"><h1 >Tag:' + tag + '</h1><div class=".gallery-sort"><p>Sort by:</p><button onclick="sortImagesByPublishedDate()" >Data published</button><button onclick="sortImagesByTakenDate()">Data taken</button><div data-tag="' + tag + '" class="gallery component" id="' + tag + '"></div></div></div></div>');
mainFunction(tag);
});
});
然后我想通过单击一个按钮来使用sortImagesByPublishedDate() 和sortImagesByTakenDate(),但我希望它们只对这个特定画廊而不是所有画廊中的图像进行排序。如果我有一个画廊,它工作正常。当我添加更多画廊时,问题就开始了。在以下函数中应该如何选择变量$gallery?
function sortImagesByPublishedDate() {
var $gallery = $('div.gallery'),
$galleryA = $gallery.children('a');
$galleryA.sort(function(a, b) {
var an = a.getAttribute('data-published'),
bn = b.getAttribute('data-published');
if (an > bn) {
return 1;
}
if (an < bn) {
return -1;
}
return 0;
});
$galleryA.detach().appendTo($gallery);
}
【问题讨论】:
-
你想得到什么元素,你生成的html中按钮旁边的
.gallerydiv? -
是的。确切地。我该怎么做?
-
将
this传递给sortImagesByPublishedDate(this)所以你的代码是function sortImagesByPublishedDate(thisObj) {然后var $gallery = $(thisObj).closest(".gallery"); -
@DominikGłowicki 检查我的答案。
标签: javascript jquery html function jquery-selectors