找不到基于属性的元素

时间:2016-01-27 12:20:52

标签: javascript jquery

当我将鼠标悬停在另一个元素上时,我试图为一个元素引发一个ms.Seek(0, SeekOrigin.Begin);事件。我试图根据数据属性找到元素:

var client = new HttpClient();
var response = await client.GetAsync(new Uri($"{url}{imageId}")); // call to WebApi; url and imageId defined earlier

if (response.IsSuccessStatusCode)
{
    using (var contentStream = await response.Content.ReadAsInputStreamAsync())
    {
        var stream = contentStream.AsStreamForRead();
        var file = await imagesFolder.CreateFileAsync(imageFileName, CreationCollisionOption.ReplaceExisting);

        using (MemoryStream ms = new MemoryStream())
        {
            await stream.CopyToAsync(ms);
            using (var fileStream = await file.OpenStreamForWriteAsync())
            {
                ms.Seek(0, SeekOrigin.Begin);
                await ms.CopyToAsync(fileStream);
                ms.Seek(0, SeekOrigin.Begin); // rewind for next use below
            }

            string md5Hash = await Utils.GetMD5Hash(ms);
            await AddImageToDataBase(file, md5Hash);
        }
    }
}

我的事件触发,调试我可以看到具有mouseenter类的元素列表,其中一个具有匹配的数据属性,但el的长度始终为0.

带事件的元素:

 $("#modal").on("mouseenter", ".jq_pin", function(e) {
        var attr = $(this).data("abbr");
        var els = $(".jq_mapPoint");
        var el = els.find("[data-abbr='" + attr  + "']");
        el.trigger(e.type);
    });

元素我试图瞄准:

jq_mapPoint

2 个答案:

答案 0 :(得分:4)

您需要.filter()而不是.find()

  

将匹配元素集合减少到与选择器匹配的元素或通过函数测试。

var el = els.filter("[data-abbr='" + attr  + "']");

而不是

var el = els.find("[data-abbr='" + attr  + "']");

答案 1 :(得分:-1)

可能需要所有选择器*

theels.find("*[data-abbr='" + attr  + "']");