Как сохранить селектор 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 ответов


Я добавлю другую альтернативу

$('.delete', saved).hide();
$('.deleting', saved).show()
...

можно использовать 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');
    });