2015-02-05 4 views
-1

Если у меня есть структура вроде этого:Какой селектор я использую для доступа к этому div?

var myThing = jQuery(
    jQuery('<div/>') 
     .addClass('myTopDiv') 
     .append(
      jQuery('<div/>') 
       .text('some text') 
       .addClass('mySecondDiv') 
     ).append('<div/>') 
      .text('some more text') // I WANT TO REPLACE THIS TEXT 
); 

Как таргетировать на DIV, который содержит текст some more text и заменить этот текст с новым текстом?

Я сохранил его внутри переменной с именем myThing, но я не знаю, как перейти вниз к div, который я хочу.

Я не могу использовать классы в качестве селекторов, так как в моем приложении есть несколько экземпляров этой переменной.

Что-то вроде этого, возможно? Что не работает ...

jQuery(
    jQuery('<tr/>') 
     .text('new text') 
).appendTo(myThing); 
+0

Доля HTML и правильный/полный код jQuery –

ответ

5

Вы остановить сумасшедшую вложенность, а также использовать переменные

var topDiv = $('<div />', { 
       'class' : 'myTopDiv' 
      }), 
    secDiv = $('<div />', { 
       'class' : 'mySecondDiv', 
       text : 'some text' 
      }), 
    thrDiv = $('<div />', { 
       text : 'some more text' 
      }); 

topDiv.append(secDiv, thrDiv); 

// change text 

thrDiv.text('Some other text'); 
+0

А если у него 100 видов, чем использовать массив или что? Почему 'myThing.find ('div: last')' плохо? – skobaljic

+0

Если у него есть сотня элементов, это, безусловно, намного более чистое, чем то, что он сейчас делает, и кроме многого написания, это не проблема, но вообще-то не следует использовать javascript для генерации большого количества HTML в любом случае. – adeneo

+0

Cheers adeneo, это гораздо лучший подход, чем мой! Очень признателен! – Daft

0

Не уверен, но возможно:

jQuery('div.myTopDiv div:last').text() 

?

+2

_I не может использовать классы как selectors_! –

+0

В этом случае скрипка была бы полезной :) – peterpeterson

0

У вас есть ошибка в коде (возможно, из-за сложной вложенности). проверьте эту скрипту http://jsfiddle.net/r1h8fy9j/ на исправление одного и двух возможных решений для вашей проблемы:

jQuery(myThing).find('div:last').text('text to replace to'); - в случае, если цель div является последней.

jQuery(myThing).find('div').eq(1).text('text to replace to'); - в случае, если цель div указана по конкретному индексу.

Смежные вопросы