2009-06-29 22 views
23
<div><span>shanghai</span><span>male</span></div> 

Per div come sopra, quando il mouse sopra, dovrebbe diventare cursor: pointer, e quando si fa clic, sparare un funzione javascriptcome rendere div-click-able?

, come fare quel lavoro?

MODIFICA: e come modificare il colore di sfondo di div quando il mouse è acceso?

modificare nuovamente: come rendere la larghezza del primo arco = 120px Sembra non funziona con Firefox

+0

perché non usi un a-tag per il collegamento? Se imposti display: block per il a-tag si comporta come il div. Questa soluzione sarebbe più semanticamente. Puoi ancora aggiungere il listener di eventi dalle risposte in basso sul a-tag. – Reeno

risposta

46

Dategli un ID come "qualcosa", quindi:

var something = document.getElementById('something'); 

something.style.cursor = 'pointer'; 
something.onclick = function() { 
    // do something... 
}; 

Cambiare lo sfondo colore (come per la tua domanda aggiornata):

something.onmouseover = function() { 
    this.style.backgroundColor = 'red'; 
}; 
something.onmouseout = function() { 
    this.style.backgroundColor = ''; 
}; 
+5

Ricordarsi di farlo all'interno di window.onload-event. – alexn

+1

Oppure, posiziona lo script da qualche parte sotto l'elemento preso di mira. – James

+0

btw, come rendere la larghezza della prima span: 120px? Lo span – omg

2

aggiungere l'attributo onclick

<div onclick="myFunction(event);"><span>shanghai</span><span>male</span></div> 

Per ottenere il cursore per cambiare l'uso css's cursor rule.

div[onclick] { 
    cursor: pointer; 
} 

Il selettore utilizza un selettore di attributo che non funziona in alcune versioni di IE. Se vuoi supportare quelle versioni, aggiungi una classe al tuo div.

+2

Perché è così invadente? Fa quello che l'OP ha chiesto. – JonoW

20

<div style="cursor: pointer;" onclick="theFunction()">

è la cosa più semplice che funziona.

Ovviamente nella soluzione finale è necessario separare il markup da styling (css) e behavior (javascript) - leggere su di esso on a list apart per le buone pratiche non solo sulla risoluzione di questo particolare problema, ma nel design del markup in generale.

+0

e come cambiare il colore di sfondo di div quando il mouse è acceso? – omg

+0

aggiungi un passaggio del mouse sul css – CharybdeBE

1

Se questa div è una funzione, suggerisco di utilizzare il cursore: puntatore nel proprio stile come style = "cursor: pointer" e può utilizzare la funzione onclick.

come questo

<div onclick="myfunction()" style="cursor:pointer"></div> 

ma vi suggerisco di utilizzare un framework JS come jquery o extjs

+1

Perché dovrebbe usare un intero framework per qualcosa di così semplice!?!? – James

+2

cursore: la mano non va bene su browser diversi da IE. cursor: pointer è il modo cross browser di fare "la mano" –

2

Come hai aggiornato la tua domanda, ecco un esempio obtrustive:

window.onload = function() 
{ 
    var div = document.getElementById("mydiv"); 

    div.style.cursor = 'pointer'; 
    div.onmouseover = function() 
    { 
     div.style.background = "#ff00ff"; 
    }; 
} 
2
<div style="cursor: pointer;" onclick="theFunction()" onmouseover="this.style.background='red'" onmouseout="this.style.background=''" ><span>shanghai</span><span>male</span></div> 

Questo cambierà il colore di sfondo e

7

Suggerisco di usare jQuery:

$('#mydiv') 
    .css('cursor', 'pointer') 
    .click(
    function(){ 
    alert('Click event is fired'); 
    } 
) 
    .hover(
    function(){ 
     $(this).css('background', '#ff00ff'); 
    }, 
    function(){ 
     $(this).css('background', ''); 
    } 
); 
+0

Come è stato pubblicato in un commento sopra; perché usare un framework per una cosa così semplice? –

+0

ma ancora +1 per codice ben scritto –

+1

Se ci sono molte cose semplici nel tuo progetto, penso che un buon framework può far risparmiare molto tempo. Se vuoi un framework javascript, jQuery è l'opzione migliore :) –

4

Suggerisco di utilizzare una classe CSS chiamata clickbox e attivarla con jQuery:

$(".clickbox").click(function(){ 
    window.location=$(this).find("a").attr("href"); 
    return false; 
}); 

Ora l'unica cosa che dovete fare è contrassegnare la div come cliccabile e fornire un collegamento:

<div id="logo" class="clickbox"><a href="index.php"></a></div> 

Inoltre uno stile CSS per modificare il cursore del mouse:

.clickbox { 
    cursor: pointer; 
} 

Facile non è vero?