Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jQuery селектор выбирает не те объекты


Автор: SoWa 3.6.2012, 20:06
Привет! Есть такая структура:
Код

<li biz_id="0">
<p class="ui-li-desc">Type0</p>
<p class="ui-li-desc">Price0</p>
</li>
<li biz_id="1">
<p class="ui-li-desc">Type1</p>
<p class="ui-li-desc">Price1</p>
</li>


Пишу такой селектор:
Код

//id = 0; id приходит извне
var mainLi = $("li[biz_id='"+id+"']");

Вроде должен выбрать только один элемент списка. Ладно.
Теперь я хочу в первом теге р исправить данные:
Код

mainLi.find('p').first().text('foobarfoobar');

Текст исправляется, все хорошо.
Теперь мне надо поменять текст первого элемента р во втором элементе списка:
Код

//id = 1; id приходит извне
var mainLi = $("li[biz_id='"+id+"']");
mainLi.find('p').first().text('loremipsum');

И вот после этого у меня в обоих элементах списка li в первых тегах p находится loremipsum, хотя вроде тот, где foobarfoobar задеть не должно было

Объясните, что я делаю не то?

Автор: Amphiluke 3.6.2012, 21:49
В точности по вашему описанию проблему воспроизвести не удается.
Код

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Noname</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    //id = 0; id приходит извне
    var id = 0;
    var mainLi = $("li[biz_id='"+id+"']");
    mainLi.find('p').first().text('foobarfoobar');
    
    //id = 1; id приходит извне
    id = 1;
    mainLi = $("li[biz_id='"+id+"']");
    mainLi.find('p').first().text('loremipsum');
});
</script>
</head>
<body>
<ul>
    <li biz_id="0">
        <p class="ui-li-desc">Type0</p>
        <p class="ui-li-desc">Price0</p>
    </li>
    <li biz_id="1">
        <p class="ui-li-desc">Type1</p>
        <p class="ui-li-desc">Price1</p>
    </li>
</ul>
</body>
</html>

Автор: SoWa 4.6.2012, 08:56
Нда, мой косяк. Действия происходили в такой конструкции:
Код

$('#saveObjectButton').click(function() {
//Тут
})

Поэтому все хэндлеры сохранялись и отрабатывали.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)