Member 13761995 Ответов: 1

Преобразуйте следующий код jquery в typescript


$(документ).готово(функция(){
$('#channelType').on('change', функция() {
if ( this.value == '1')
{
$("#внутренний").показать();
}
еще
{
$("#внутренний").скрыть();
}
});
});

Что я уже пробовал:

я попытался изменить приведенный выше фрагмент jquery на typescript

1 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Есть несколько проблем с этим кодом, во—первых, вы смешиваете jQuery с JavaScript-контекстом, о котором я здесь говорю. Например, смотрите здесь,

$('#channelType').on('change', function() {
   if (this.value == '1')
   { // ...

this ссылается на объект JavaScript, а не на jQuery, чтобы ссылаться на который вам нужно использовать $(this) объект. Так что я могу решить эту проблему для вас, чтобы работать в jQuery, при условии, что все остальное в порядке.
$(document).ready(function(){
   $('#channelType').on('change', function() {
      if ($(this).val() == '1')
      {
          $("#internal").show();
      }
      else
      {
          $("#internal").hide();
      }
   });
});

Это должно работать как jQuery, если вы хотите, чтобы это сработало. Если нет, то вам нужно многое изменить, начиная с HTML, возможно, ваш элемент является элементом select, таким образом, это выглядит так,
<select id="channelType" onchange="channelChanged();">
   <!-- Internal content -->
</select>

Затем, где-то в JavaScript, вы бы написали следующую функцию для обработки изменения значения в этом элементе,
function channelChanged() {
    // We can also pass this to the function
    var channelType = document.getElementById("channelType");
    var internalObject = document.getElementById("internal");

    // Change the display of the element.
    if(channelType.value == '1') {
        internalObject.style.display = 'block';
    } else {
        internalObject.style.display = 'none';
    }
}

Но опять же, это то, что вы хотите использовать? :-)

Подробнее о событии onchange читайте здесь, onchange - Mozilla | MDN[^]