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

Đối div như trên, khi chuột trên, nó sẽ trở thành con trỏ: con trỏ, và khi nhấn vào, bắn một hàmlàm thế nào để làm cho div nhấp chuột có thể?

javascript, làm thế nào để làm công việc đó?

EDIT: và cách thay đổi màu nền của div khi chuột đang bật?

EDIT LẠI: làm thế nào để làm cho nhịp cầu đầu tiên của width = 120px vẻ không làm việc trong firefox

+0

tại sao bạn không sử dụng thẻ a cho liên kết? Nếu bạn đặt display: block cho a-tag nó hoạt động giống như div. Giải pháp này sẽ mang tính ngữ nghĩa hơn. Bạn vẫn có thể thêm trình xử lý sự kiện từ các câu trả lời bên dưới vào thẻ. – Reeno

Trả lời

46

Give it ID như "cái gì đó", sau đó:

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

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

Thay đổi nền màu (theo câu hỏi được cập nhật của bạn):

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

Hãy nhớ làm điều này bên trong window.onload-event. – alexn

+1

Hoặc, đặt tập lệnh ở đâu đó bên dưới phần tử được nhắm mục tiêu. – James

+0

btw, cách tạo chiều rộng của nhịp đầu tiên: 120px? – omg

2

thêm onclick thuộc tính

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

Để có được con trỏ để thay đổi sử dụng css's cursor rule.

div[onclick] { 
    cursor: pointer; 
} 

Bộ chọn sử dụng bộ chọn thuộc tính không hoạt động trong một số phiên bản của IE. Nếu bạn muốn hỗ trợ các phiên bản đó, hãy thêm một lớp vào div của bạn.

+2

Tại sao điều này gây khó chịu? Nó làm những gì OP yêu cầu. – JonoW

20

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

là điều đơn giản nhất hoạt động. Tất nhiên trong giải pháp cuối cùng, bạn nên tách đánh dấu khỏi phong cách (css) và hành vi (javascript) - đọc trên đó on a list apart để thực hành tốt không chỉ giải quyết vấn đề cụ thể này mà còn trong thiết kế đánh dấu nói chung.

+0

và cách thay đổi màu nền của div khi chuột đang bật? – omg

+0

thêm chuột vào css – CharybdeBE

1

Nếu div này là một chức năng tôi đề nghị sử dụng con trỏ: con trỏ theo kiểu của bạn như style = "cursor: pointer" và có thể sử dụng chức năng onclick.

như thế này

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

nhưng tôi đề nghị bạn sử dụng một khuôn khổ JS như jquery hoặc extjs

+1

Tại sao anh/cô ấy nên sử dụng toàn bộ khung công tác cho một thứ đơn giản như vậy!?!? – James

+2

con trỏ: tay không tốt trên các trình duyệt khác ngoài IE. con trỏ: con trỏ là cách trình duyệt chéo làm "bàn tay" –

2

Như bạn cập nhật câu hỏi của bạn, sau đây là một ví dụ 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> 

này sẽ thay đổi màu nền cũng

7

Tôi đề nghị để sử dụng jQuery:

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

Như đã được đăng trong một bình luận ở trên; tại sao sử dụng một khuôn khổ cho một điều đơn giản như vậy? –

+0

nhưng vẫn +1 cho mã được viết độc đáo –

+1

Nếu có nhiều điều đơn giản trong dự án của bạn, tôi nghĩ rằng một khung tốt có thể tiết kiệm rất nhiều thời gian. Nếu bạn muốn có một khung javascript, jQuery là một lựa chọn tốt nhất :) –

4

Tôi đề nghị sử dụng một lớp CSS gọi là clickbox và kích hoạt nó với jQuery:

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

Bây giờ điều duy nhất bạn phải làm là đánh dấu div của bạn có thể click và cung cấp một liên kết:

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

Cộng với một phong cách CSS để thay đổi con trỏ chuột:

.clickbox { 
    cursor: pointer; 
} 

dễ dàng phải không?

Các vấn đề liên quan