element.$1p( selector ) возвращает первый парент на странице
От: Intriguer  
Дата: 05.01.15 16:31
Оценка:
Таким образом добавляются элементы:
std::pair<double, std::string> res = TransformSize(static_cast<double>(size));
std::string html(
"<div .duplicate-found>"
"<table>"
"<tr>"
"<td><span .checkbox #duplicate-found-check></span></td>"
"<td><span .root-folder></span></td>"
"<td .location-name><span .duplicate-file-name>" + fileName + "</span></td>"
"<td .total><span .duplicate-file-size>" + boost::str(boost::format("%.3f") % res.first)
+ "</span><span>" + res.second + "</span></td>"
"</tr>"
"</table>"
"<ul .tree-lines>");

int elNumber = 0;
for (const auto & line : locations)
{
html += "<li .path-list><span .location-check #locationId" + std::to_string(++elNumber)
+ "></span><span .duplicates-path>" + line.second.string() + "</span></li>";
}

html += "</ul>";
html += "</div>";

rootEl.set_html(reinterpret_cast<const unsigned char*>(html.c_str()), html.size(), SIH_APPEND_AFTER_LAST);
CSS:
.checkbox {
active-on!: self:checked = !self:checked,
self.$1p(div.duplicate-found).$(.location-check)->@(item)(element el = $1(#<item.id>)
, el:checked = self:checked ? true # null);
}
Нужно чтобы при клике на родительский чекбокс — проставлялись все чайлды чекбоксы в списке. В данном случае проставяются все чекбоксы первого элемента когда кликаешь по любому из родительских чекбоксов. Получается, что .$1p возвращает не " returns nearest parent element matching the selector", а просто первый на странице.
Re: element.$1p( selector ) возвращает первый парент на странице
От: c-smile Канада http://terrainformatica.com
Дата: 05.01.15 18:11
Оценка:
Здравствуйте, Intriguer, Вы писали:

I>Получается, что .$1p возвращает не " returns nearest parent element matching the selector", а просто первый на странице.


Именно nearest parent element он и возвращает.

Проверяем:

<html>
  <head>
    <style>
    
    div.parent { border:1px solid red; margin:10px; }
    div.parent:checked { background:yellow; }
    
    div.check { 
      active-on!: self:checked = !self:checked,
                  self.$1p(div.parent):checked = self:checked;  
    }
    div.check:checked {
      color:red;
    }
    
    </style>
  </head>
<body>

  <div .parent>
    <div>
      <div.check>click me</div>
    </div>
  </div>
  <div .parent>
    <div>
      <div.check>click me</div>
    </div>
  </div>
</body>
</html>


Приведи свой пример в HTML виде — тогда можно будет понять что у тебя там не так.
Re[2]: element.$1p( selector ) возвращает первый парент на странице
От: Intriguer  
Дата: 06.01.15 08:57
Оценка:
Здравствуйте, c-smile, Вы писали:

Не совсем то, мне нужно, чтобы по клику на внешний чекбокс — проставлялись внутренние

<html>
  <head>
    <style>
    
       .checkbox { 
    active-on!: self:checked = !self:checked,
    self.$1p(div.duplicate-found).$(.location-check)->@(item)(element el = $1(#<item.id>)
        , el:checked = self:checked ? true # null);
    }
    
    </style>
  </head>
<body>
<div .duplicate-found>
            <table>
                <tr>
                    <td .first-duplicate-td><span .checkbox #duplicate-found-check></span></td>
                    <td><span .root-folder></span></td>
                    <td .location-name><span .duplicate-file-name>doc.docx</span></td>
                    <td .total><span .duplicate-file-size>23.45</span><span>MB</span></td>
                </tr>
            </table>
            <ul .tree-lines>
                <li .path-list><span .location-check></span><span .duplicates-path>C:\</span></li>
                <li .path-list><span .location-check></span><span .duplicates-path>C:\</span></li>
                <li .path-list><span .location-check></span><span .duplicates-path>C:\</span></li>
            </ul>
        </div>
        <div .duplicate-found>
            <table>
                <tr>
                    <td .first-duplicate-td><span .checkbox #duplicate-found-check></span></td>
                    <td><span .root-folder></span></td>
                    <td .location-name><span .duplicate-file-name>doc.docx</span></td>
                    <td .total><span .duplicate-file-size>23.45</span><span>MB</span></td>
                </tr>
            </table>
            <ul .tree-lines>
                <li .path-list><span .location-check></span><span .duplicates-path>C:\</span></li>
                <li .path-list><span .location-check></span><span .duplicates-path>C:\</span></li>
                <li .path-list><span .location-check></span><span .duplicates-path>C:\</span></li>
            </ul>
        </div>
</body>
</html>


Внешний у меня в таблице, за таблицей идет список — внутренние в списке — я пытаюсь получить самый верхний div, который содержит и таблицу и список — и у него отыскать .location-check — чекбоксы списка.
Re[3]: element.$1p( selector ) возвращает первый парент на странице
От: Intriguer  
Дата: 06.01.15 09:43
Оценка:
I>Внешний у меня в таблице, за таблицей идет список — внутренние в списке — я пытаюсь получить самый верхний div, который содержит и таблицу и список — и у него отыскать .location-check — чекбоксы списка.

Все, вопрос отпал, разобрался, пардон за беспокойство. В общем трабла в том, что каждой записи листа у меня генерился ид-шник,потому что эти записи по ИД находились — element el = $1(#<item.id>, и эти ид у меня были не уникальны — поэтому отмечались только первые на странице записи списка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.