Как сравнить объект HTML с jQuery

Мне нравится ответ Онура , но он будет расширяться, чтобы включить опциональный метод toJSON() для сериализации объектов:

def dumper(obj):
    try:
        return obj.toJSON()
    except:
        return obj.__dict__
print json.dumps(some_big_object, default=dumper, indent=2)

11
задан Yeldar Kurmangaliyev 20 November 2015 в 11:37
поделиться

5 ответов

То, когда HTML анализируется, что JQuery видит в DOM, является a UPWARDS DOUBLE ARROW (" ⇑ "), не ссылка на сущность. Таким образом в Вашем коде JavaScript необходимо протестировать на "⇑" или "\u21d1". Кроме того, необходимо изменить то, на что Вы переключаетесь:

function expandCollapse(id) {
    var arrow = $("#"+id+" span").html();
    if(arrow == "\u21d1") {     
        $("#"+id+" span").html("\u21d3");                           
    } else {            
        $("#"+id+" span").html("\u21d1");                           
    }
}
17
ответ дан 3 December 2019 в 05:14
поделиться

Если Вы делаете предупреждение arrow что это возвращает? Это возвращает точную строку, против которой Вы соответствуете? Если Вы получаете фактические символы '⇓' и '⇑' Вам, вероятно, придется соответствовать ему против "\u21D1" и "\u21D3".

Кроме того, можно хотеть попробовать ⇑ и ⇓ с тех пор не все браузеры поддерживают те объекты.

Обновление: вот полностью рабочий пример: http://jsbin.com/edogop/3/edit#html,live

window.expandCollapse = function (id) {   
  var $arrowSpan = $("#" + id + " span"),
      arrowCharCode = $arrowSpan.text().charCodeAt(0);

  // 8659 is the unicode value of the html entity
  if (arrowCharCode === 8659) {
    $arrowSpan.html("⇑");                           
  } else {            
    $arrowSpan.html("⇓");                           
  }

  // one liner:
  //$("#" + id + " span").html( ($("#" + id + " span").text().charCodeAt(0) === 8659) ? "⇑" : "⇓" );
};
3
ответ дан 3 December 2019 в 05:14
поделиться

Используйте класс для передачи сигналов о текущем состоянии промежутка. HTML мог быть похожим на это

<h3 id="headerId"><span class="upArrow">&uArr;</span>Header title</h3>

Затем в JavaScript Вы делаете

$( '.upArrow, .downArrow' ).click( function( span ) {
    if ( span.hasClass( 'upArrow' ) )
        span.text( "&dArr;" );
    else
        span.text( "&uArr;" );
    span.toggleClass( 'upArrow' );
    span.toggleClass( 'downArrow' );
} );

Это не может быть лучшим способом, но он должен работать. Не протестировал его жесткий

1
ответ дан 3 December 2019 в 05:14
поделиться

Возможно, Вы не получаете точное совпадение, потому что браузер печатает строчными литерами объект или что-то. Попытайтесь использовать карат (^) и нижний регистр "v" только для тестирования.

Отредактированный - Моя первая теория была проста неправильный.

0
ответ дан 3 December 2019 в 05:14
поделиться

Проверьте .toggle () эффект.

Вот что-то подобное, с которым я играл ранее.

HTML:

<div id="inplace">
<div id="myStatic">Hello World!</div>
<div id="myEdit" style="display: none">
<input id="myNewTxt" type="text" />
<input id="myOk" type="button" value="OK" />
<input id="myX" type="button" value="X" />
</div></div>

СЦЕНАРИЙ:

 $("#myStatic").bind("click", function(){
      $("#myNewTxt").val($("#myStatic").text());
      $("#myStatic,#myEdit").toggle();
 });
 $("#myOk").click(function(){
      $("#myStatic").text($("#myNewTxt").val());
      $("#myStatic,#myEdit").toggle();
 });
 $("#myX").click(function(){
      $("#myStatic,#myEdit").toggle();
 });
1
ответ дан 3 December 2019 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: