Селектор jQuery: Id заканчивается?

Я сделал новую версию DynamicJsonConverter, которая использует объекты Expando. Я использовал объекты expando, потому что я хотел Сериализовать динамическую обратно в json с помощью Json.net.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Dynamic;
using System.Web.Script.Serialization;

public static class DynamicJson
{
    public static dynamic Parse(string json)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        jss.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() });

        dynamic glossaryEntry = jss.Deserialize(json, typeof(object)) as dynamic;
        return glossaryEntry;
    }

    class DynamicJsonConverter : JavaScriptConverter
    {
        public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            if (dictionary == null)
                throw new ArgumentNullException("dictionary");

            var result = ToExpando(dictionary);

            return type == typeof(object) ? result : null;
        }

        private static ExpandoObject ToExpando(IDictionary<string, object> dictionary)
        {
            var result = new ExpandoObject();
            var dic = result as IDictionary<String, object>;

            foreach (var item in dictionary)
            {
                var valueAsDic = item.Value as IDictionary<string, object>;
                if (valueAsDic != null)
                {
                    dic.Add(item.Key, ToExpando(valueAsDic));
                    continue;
                }
                var arrayList = item.Value as ArrayList;
                if (arrayList != null && arrayList.Count > 0)
                {
                    dic.Add(item.Key, ToExpando(arrayList));
                    continue;
                }

                dic.Add(item.Key, item.Value);
            }
            return result;
        }

        private static ArrayList ToExpando(ArrayList obj)
        {
            ArrayList result = new ArrayList();

            foreach (var item in obj)
            {
                var valueAsDic = item as IDictionary<string, object>;
                if (valueAsDic != null)
                {
                    result.Add(ToExpando(valueAsDic));
                    continue;
                }

                var arrayList = item as ArrayList;
                if (arrayList != null && arrayList.Count > 0)
                {
                    result.Add(ToExpando(arrayList));
                    continue;
                }

                result.Add(item);
            }
            return result;
        }

        public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
        {
            throw new NotImplementedException();
        }

        public override IEnumerable<Type> SupportedTypes
        {
            get { return new ReadOnlyCollection<Type>(new List<Type>(new[] { typeof(object) })); }
        }
    }
}  
374
задан Brane 1 August 2018 в 15:12
поделиться

5 ответов

Если Вы знаете, что элемент вводит тогда: (например: замените 'элемент' 'отделением')

$("element[id$='txtTitle']")

, Если Вы не знаете тип элемента:

$("[id$='txtTitle']")

[еще 114] информация, доступная

<час>

// the old way, needs exact ID: document.getElementById("hi").value = "kk";
$(function() {
  $("[id$='txtTitle']").val("zz");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="ctl_blabla_txtTitle" type="text" />
608
ответ дан Mohammad 2 August 2018 в 01:12
поделиться

Попробуйте

$("element[id$='txtTitle']");

редактирование: 4 секунды поздно: P

32
ответ дан kkyy 2 August 2018 в 01:12
поделиться
$('element[id$=txtTitle]')

не строго необходимо заключить в кавычки фрагмент текста, которому Вы соответствуете против

30
ответ дан Scott Evernden 2 August 2018 в 01:12
поделиться

Безопаснее добавлять подчеркивание или $ к искомому термину, поэтому вероятность совпадения с другими элементами, заканчивающимися на тот же идентификатор, меньше:

$("element[id$=_txtTitle]")

(где element - это тип элемента, который вы пытаетесь найти - например, div , input и т. д.

(Обратите внимание, вы предполагаете, что в ваших идентификаторах есть символы $, но я думаю, что .NET 2 теперь имеет тенденцию использовать символы подчеркивания в вместо идентификатора, поэтому в моем примере используется подчеркивание).

13
ответ дан 22 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

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