выберите дочерний тег по значению и дважды щелкните - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть несколько тегов с классом i11, все с дочерними тегами класса i15, мне нужно выбрать конкретный из этих дочерних тегов со значением folder (неизвестная переменная).Чтобы лучше объяснить, вот фрагмент кода ахтмл:

<div class = "i11">
  <input type = "text"
         class = "i15"
         style = "display: none;" />
  <input type = "text"
         class = "i16"
         style = "display: none;" />
  //other non-relevant html fields
</div>
//code above repeated 'x' amount of times

У меня есть контекстное меню с опцией, которая при выборе вызывает функцию и сохраняет значение щелчкового i11 i15 значения,Затем мне нужно выбрать конкретный i15 в функции, я не могу установить отдельные идентификаторы, так как может быть любое количество этих i11 делений и они создаются динамически.

Код, который я пытался выбрать, был:

function a25() {
  var folder = $('#iFO').val();
  if (('.i11').children('.i15').val() == folder) {
    $(this).dblclick();
    console.log('yay!');
  } else {
    console.log("nothing :(");
  }
}

Любая помощь очень ценится.

РЕДАКТИРОВАТЬ: мне нужно выбрать элемент ELEMENT или сам родительский элемент, а незначение элемента, используя значение, извлеченное и сохраненное в folder, затем инициируйте событие двойного щелчка.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Используя селектор класса, даже если выбран только 1 элемент, вы получите массив обратно, обернутый в объект-обертку jQuery. Следовательно, вам нужно получить сам элемент примерно так:

$('.i11').children('.i15').get(0).val() == folder//etc...

также, если есть несколько детей одного и того же класса (что весьма вероятно, поскольку вы не используете идентификаторы), попробуйте выполнить циклы через дочерние элементы:

$(parentElement).children('.i15').each(function()
{
    if ($(this).val() === folder)
    {
        console.log($(this));// || console.log($(this).closest('.i11'));
    }
});

Еще одна вещь, которую стоит попробовать, это явный запуск связанных событий и их обработчиков. Вместо того, чтобы делать $(this).dblclick();, попробуйте $(this).trigger('dblclick');. надеюсь, это поможет ... хотя я мог бы неправильно понять ваш вопрос все вместе ... если так: не стесняйтесь, дайте мне знать

0 голосов
/ 03 апреля 2012

Если я правильно понял ваши требования, попробуйте следующее:

function a25() {
    var folder = $('#iFO').val();
    var $el = $('.i11').children('.i15');
    if ($el.val() == folder) {
        $el.select();
        console.log('yay!');
    } 
    else {
        console.log("nothing :(");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...