2013-08-29 10 views
7

W JavaScript używam zdarzenia kliknięcia, aby zmienić dane wykresu. Poniżej znajduje się metoda dla zdarzenia kliknięcia.Wiele identyfikatorów w jednym zdarzeniu kliknięcia JavaScriptu

$('#pro1').click(function() { 
      chart.series[0].update({ 
       data: pro1 
      }); 
     }); 
     $('#pro2').click(function() { 
      chart.series[0].update({ 
       data: pro2 
      }); 
     }); 
     $('#pro3').click(function() { 
      chart.series[0].update({ 
       data: pro3 
      }); 
     }); 

muszę minify te trzy zdarzenia kliknięcia w jednym przypadku, to znaczy chcę napisać jedno zdarzenie click, które obsłuży identyfikatora. coś jak poniższy kod.

$('#pro'+i).click(function() { 
chart.series[0].update({ 
    data: pro+i 
}); 
}); 


nie wiem jak to zrobić dokładnie. Powyższy kod jest niepoprawny, to tylko mój brak znajomości JavaScript.

+1

użyj klasy i magii "to" :) –

+0

byłoby znacznie łatwiej, jeśli 'pro' będzie tablicą –

+0

yep użyj klasy i" i "woud be $ (this). indeks(); – Romaindr

Odpowiedz

8

Proponuję utworzenie obiektu i wybranie elementów za pomocą klas, id elementu klikniętego pobiera wartość odpowiedniego właściwości obiektu pomocnika:

var pros = { 
    pro1: '...', 
    pro2: '...' 
}; 

$('.pros').click(function() { 
    chart.series[0].update({ 
     data: pros[this.id] 
    }); 
}); 
+0

Dzięki to działa dobrze dla mnie – MAR

3

Użyj klasy.

$('.pro').click(function() { 
chart.series[0].update({ 
    data: $(this).attr('id'); 
}); 
}); 

A potem na każdej z # Pro1, # Pro2 # elementów Pro3 dodać klasę 'pro'

+0

z przyczyn głosowania w dół? – Niall

+0

Miałeś 'dane: pro + i' bez definiowania vars dla' pro' lub 'i'. Downvote usunięte. –

+0

Pozdrawiam, było w toku. Był w środku tego. – Niall

7
$('#pro1,#pro2,#pro3').click(function() { 
    chart.series[0].update({ 
     data: $(this).attr('id'); 
    }); 
}); 

zaktualizowany kod

$('#pro1,#pro2,#pro3').click(function() { 
    chart.series[0].update({ 
     data: window[this.id] 
    }); 
}); 
+2

'proN' jest zmienną, a nie łańcuchem. Jeśli zmienne są globalnymi 'window [this.id]' będzie działać. – undefined

+0

czy naprawdę myślisz, że OP chce przekazać ciąg jako dane wykresu? –

0

Mógłbyś dać wszystko twoje elementy to nazwa klasy i użyj selektora: eq() w jQuery.

2
$("*[id^=pro]").click(function() { 
    chart.series[0].update({ 
     data: $(this).attr('id'); 
    }); 
}); 
29

Spróbuj tego:

var that = this; 
$('#pro1,#pro2,#pro3').click(function() { 
    chart.series[0].update({ 
     data: that[$(this).attr('id')]; 
    }); 
}); 
Powiązane problemy