javascript
  • jquery
  • 2016-04-14 2 views 0 likes 
    0

    Я пытаюсь выбрать все якоря, содержащиеся в переменной, которая является HTML, как показано ниже моего кода:JQuery селектор на переменную, содержащую HTML

    var deposti_row = " 
    <a data-country='uk' data-currency='eur' data-matching='country-currency'> AA </a> 
    <a data-country='uk' data-currency='eur' data-matching='country'> BB </a> 
    <a data-country='uk' data-currency='eur' data-matching='none'> CC </a> 
    " 
    
    $("a['data-matching']",$(deposit_row)).each(function(){ 
    console.log(this); 
    }); 
    

    Но я получаю Синтаксическая ошибка ошибки, непризнанный выражение: а [» сопоставление данных ']. Любая помощь, пожалуйста?

    +0

    https://jsfiddle.net/rayon_1990/6pa6fmqf/ – Rayon

    ответ

    2

    Ваш синтаксис неверен. Во всяком случае, то, что вы действительно хотите, чтобы отфильтровать соответствующий комплект:

    $(deposit_row).filter('a[data-matching]').each(...) 
    

    И ваш синтаксис строки тоже неправильно в отношении обработки mutliple линий. И deposti_row - это не то же самое, что и deposit_row.

    Это делает много вещей неправильно так мало писал код ...

    +0

    Кроме того, необходимо позаботиться о многострочной текстовой переменной – Satpal

    +0

    @Satpal Ya хорошая точка. Действительно, многие вещи ошибочны в опубликованном OP –

    +0

    @MrCode Извините, но какой корневой элемент вы говорите? OP хочет отфильтровать выбор, я думаю –

    0

    Вам нужно удалить одинарные кавычки из селектора атрибутов, тогда он должен работать как длинный якорный тег a имеет родительский элемент.

    Вам нужно обернуть их в div, чтобы рассматривать их как потомков

    deposit_row = $(deposit_row).wrap("<div></div>").html(); 
    
    $("a[data-matching]",$(deposit_row)).each(function(){ 
        console.log(this); 
    }); 
    

    попробовать Кроме этого, если a['data-matching'] является дочерним корневого узла

    $(deposit_row).find("a['data-matching']").each(function(){ 
    }); 
    

    Но поскольку a является корневым узлом здесь

    $(deposit_row).children("a['data-matching']").each(function(){ 
    }); 
    
    +1

    Что не так с кодом OP предоставил? – Rayon

    +0

    @RayonDabre Я думаю, что он дал кавычки имени атрибута – gurvinder372

    +0

    @Guru, Второй аргумент в '$' будет действовать как родительский элемент селектора ... Как '.find()' .. Обертка всех элементов 'a' в любой родитель поможет! – Rayon

    1

    Heres другой способ: -

    1. создать строку многострочный с \.
    2. Как нет, нет корня, проверьте с has внутри каждого из вас.

    var deposit_row = "\ 
     
    <a data-country='uk' data-currency='eur' data-matching='country-currency'> AA </a>\ 
     
    <a data-country='uk' data-currency='eur' data-matching='country'> BB </a>\ 
     
    <a data-country='uk' data-currency='eur' data-matching='none'> CC </a>\ 
     
    "; 
     
    
     
    $(deposit_row).each(function() { 
     
        if ($(this).has('[data-matching]')) 
     
        console.log(this); 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    +0

    Я действительно не думаю, что это то, что ожидает OP. –

    Смежные вопросы