2012-06-02 2 views
1

Я хочу, чтобы сделать простое событие OnClickдинамический селектор для OnClick не работает

$('._1').click(function(){ 
     window.open('abc.html?parameter=1'); 
    }); 

в описанном выше случае, я _1 как класс, сейчас существует множество таких элементов, и 1 здесь также выступает в качестве параметра запрос window.open

но есть несколько клик я хочу связать

var arrayOfValues = [1,2,4,6,7,8]; 
for(var z=0;z<arrayOfValues.length;z++) 
    $('._'+arrayOfValues[z]+'').click(function(){ 
     window.open('abc.html?parameter='+arrayOfValues[z]); 
    }); 

, но это не работает

+0

Это те '_1'. '_2' и т. Д. Динамика? – thecodeparadox

+0

выполняет ли второй бит кода ** перед ** элементы с именами классов, '_1'' _2' и т. Д. Находятся в DOM? – sissonb

+0

извините, да, они создаются динамически – Pradeep

ответ

2
var arrayOfValues = [1,2,4,6,7,8]; 

$.each(arrayOfValues, function(key, val) { 

    for(var z=0;z<arrayOfValues.length;z++) { 
    $('._'+arrayOfValues[z]).click(function(){ 
          ^-- dont need quote here 
     window.open('abc.html?parameter='+arrayOfValues[z]); 

    }); 
    } 

    // jQuery loop 
    $('._' + val).click(function(){ 

     window.open('abc.html?parameter='+arrayOfValues[z]); 

    }); 

}); 

Но если вы добавили элементы в документ после загрузки страницы, попробуйте использовать обработчик событий делегата .on().

var arrayOfValues = [1,2,4,6,7,8]; 

$.each(arrayOfValues, function(key, val) { 

    $('body').on('click', '._'+ arrayOfValues[z], function(){ 

     window.open('abc.html?parameter='+arrayOfValues[z]); 

    }); 

}); 
+0

Позвольте мне попробовать, только изменить, я вижу, это удаление ', О да, также мне нужен второй фрагмент для динамических элементов, – Pradeep

+0

@thecodeparadox Я бы замените цикл на '$ .each (arrayOfValues, function (i, el) {...})' - просто для этого выполните jQuery: D – Andreas

+0

Yo, Это сработало :), спасибо за быстрый ответ – Pradeep

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