2010-01-08 8 views
0

Конечно, это jQuery, а не мое отсутствие понимания, вызывающее эту проблему, но на всякий случай это моя некомпетентность, может кто-нибудь, пожалуйста, скажите мне, как вернуть текст «Acme» внутри этого тега?JQuery не ведет себя

<div class="grid-56" id="1005" style="border:solid 1px lightgray;"> 
    <div class="grid-20 bold"> 
     <a href="#" class="id_select_company" id="company_name_dialog"> 
      Acme 
     </a> 
    </div> 
</div> 

Это не работает!

var company_name = $("#" + id).children($("#company_name_dialog")).html(); 

Он производит

<a href="#" class="id_select_company" id="company_name_dialog"> 
    Acme 
</a> 

Я не хочу якорный тег, только текст.

+0

Я нашел решение .. это была проблема: дети ($ ("# company_name_dialog")) - это должны были быть дети ("# company_name_dialog") - меня было st00pid :) спасибо всем! – Samuurai

+0

помните, что у вас может быть только один элемент с идентификатором «company_name_dialog» - похоже, это может быть в списке с другими элементами, которые выглядят одинаково. – Jamiec

+0

Я выбираю идентификатор, сначала выбирая уникальный идентификатор, затем сверля. Он работает, но это плохая практика? Как мне это сделать? Я не могу использовать классы, потому что они используются для стилизации (!) – Samuurai

ответ

5

Использование find():

var company_name = $("#" + id).find("#company_name_dialog").html(); 

Он должен работать с children() тоже, но вы не должны передавать объект JQuery в нем, а выражение, которое в данном случае является '#company_name_dialog'.

Использование 10 или text() не имеет значения, так как теперь вы выбираете внутренности <a>, в котором нет HTML-кода. Результат такой же в обоих случаях, поскольку text() просто разметки HTML-разметки из содержимого. Использование text() в сочетании с вашим исходным кодом сработало бы, но это было бы обходным путем, и вы бы не знали, что такое настоящая проблема.

+1

Если '$ (" # "+ id) .find (" # company_name_dialog ")' и '$ (" # company_name_dialog ")' не являются то же, что-то ** серьезно ** неправильно с документом! – slebetman

+0

На самом деле мне пришлось изменить синтаксис и использовать find. - Спасибо, тату – Samuurai

2

Конечно, с .text() функции:

$("#" + id).children($("#company_name_dialog")).text(); 
3

Попробуйте что-то более прямой (тем более, что атрибут ID должен быть уникальным с HTML-документ):

var company_name = $('#company_name_dialog').text(); 
Смежные вопросы