Как сохранить селектор jquery для последующего использования
у меня есть следующий код...
$('#item_' + code + ' .delete').hide();
$('#item_' + code + ' .deleting').show();
$('#item_' + code).slideUp(400, function() {
$(this).remove();
$('#top .message').html('Item has been deleted');
});
Я хочу сохранить селектор, который я использую в переменной, и использовать его для выполнения операции вместо поиска DOM каждый раз.
поэтому я сохраняю селектор вот так...
var saved = $('#item_' + code);
но как изменить остальную часть кода? Я не очень хорошо знаком с jQuery, поэтому интересно, как это можно сделать. Будет ли это работать...
$(saved).(' .delete').hide();
$(saved).(' .deleting').hide();
$(saved).slideUp(400, function() {
$(this).remove();
$('#top .message').html('Item has been deleted');
});
6 ответов
можно использовать find()
:
var saved = $('#item_' + code);
saved.find('.delete, .deleting').hide();
saved.slideUp(400, function() {
$(this).remove();
$('#top .message').html('Item has been deleted');
});
вы можете сохранить его в переменной:
var myVar = $('#item_' + code + ' .delete').hide();
и затем, если вы хотите добавить к нему, просто добавьте в var:
myVar.css("background","green");
что эквивалентно:
$('#item_' + code + ' .delete').hide().css("background","green");
использовать find
или children
методы, которые позволяют применять селекторы к результату предыдущего запроса.
Э. Г.
var saved = $('#item_' + code);
saved.find(".delete").hide();
saved.find(".deleting").show();
saved.slideUp(400, function() {
$(this).remove();
$('#top .message').html('Item has been deleted');
});
использовать .каждая функция на сохраненном выборе
var SavedStuff = $(<something>);
// other code
SavedStuff.each( function (i, element) {
$(element).<jquery function>;
});
например:
var SavedStuff = $(".Square"); // save all items with Square class
// Other code
// Later, add rhomboid to all squares
SavedStuff.each( function (i, element) {
$(element).addClass("Rhomboid");
});
попробуйте это...
var saved = ('#item_' + code);
$(saved + ' .delete').hide();
$(saved + ' .deleting').show();
$(saved).slideUp(400, function() {
$(this).remove();
$('#top .message').html('Item has been deleted');
});