Вернуть $ (this) Dom Element jQuery

0

Я пытаюсь найти элемент с его идентификатором данных и типом данных, чтобы я мог делать с ним все, но при этом обнаруживаю ошибку. Здесь моя функция:

    find : function(id, type) {
    $('.elem').each(function(index, element) {
        if ($(this).data('id') == id && $(this).data('type') == type)
            return $(this);
    });
},

Например, я пытаюсь сделать следующее:

myClass.find(1, 'myType').text('whatever');

Как я могу это сделать?

EDIT: Благодаря adeneo и user3558931! Изменено:

    findPro : function(id, type) {
    return $('.elem[data-id=' + id + '][data-type=' + type + ']');
},
  • 1
    В .each() return не делает то, что вы думаете !! :(
  • 1
    Вы можете варьировать элементы = $ ("input [data-type = 'myType']"); elements.each (функция (IDX, эль) {$ (это) .text ( 'любой');}); Я постараюсь переписать вашу функцию так же, как она у вас есть.
Показать ещё 1 комментарий
Теги:
dom
return
this

2 ответа

3
find : function(id, type) {
    return $('.elem[data-id="'+id+'"][data-type="'+type+'"]');
},

как побочный элемент, это не сработает, если данные изначально были установлены с data(), я предполагаю, что это атрибуты данных HTML5, как в

<div data-id="something" data-type="something else"></div>

и это не связано с цепью, поскольку оно не добавлено в прототип jQuery

  • 0
    Это не короткое замыкание. Я сомневаюсь, что два элемента будут иметь одинаковый идентификатор. Насколько я вижу, целью ОП было вернуть один элемент.
  • 0
    @plalx - это именно то, что делает OP, и почему два элемента не имеют двух разных атрибутов DATA .
Показать ещё 5 комментариев
1

В .each() return служит совершенно другая цель. Поэтому вы должны придерживаться другого подхода:

......
findPro : function(id, type) {
    return $('.elem[data-id=' + id + '][data-type=' + type + ']');
},
.......
  • 0
    На самом деле, имя функции findPro, я просто изменил его, чтобы сделать его более общим для публикации, и оригинальная функция поиска полностью ускользнула от меня.
  • 0
    @SebastianSalines Я отредактировал ответ, чтобы изменить имя функции и сократил тело функции.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню