2012-02-10 31 views
0

HTML經與點擊功能問題的<tr>

<tr url="domain.com"> 
<td><input type="checkbox" name="checkbox[]" method="post" value="" class="checkbox" /> </td> 
</tr> 

JS

$("tr").not('.checkbox').click(function(){ 
    window.location = $(this).attr("url"); 

}); 

要禁用內clickbox點擊功能,但上面的代碼不起作用:它重定向甚至當我點擊複選框。我哪裏做錯了?

+0

爲什麼ü使用'。不是(..'你使用'數據'語法。' – mgraph 2012-02-10 15:17:00

+0

我的意見'和訪問它作爲'$(「選擇器」)。數據(「自定義網址」);'。順便說一句,如果我沒有弄錯,你還必須指出協議的網址 – Oybek 2012-02-10 15:17:40

回答

1

上覆選框簡單地停止事件傳播史像下面,

$('.checkbox').click(function(e){ 
    e.stopPropagation(); 
}); 

修正了拼寫錯誤。

+0

不工作...仍然重定向 – heron 2012-02-10 15:19:15

+0

There is a typo。 – ShankarSangoli 2012-02-10 15:20:05

+1

Down vote for for typo :( – 2012-02-10 15:22:45

2
$("tr").not('.checkbox') 

該代碼將匹配不具有一類checkbox所有tr元素。正如你所看到的,你的tr沒有那個類,所以這個tr將匹配。

有兩種基本的方法來做你想做的事情。你可以在函數中檢查原始點擊元素是什麼,如果是複選框,則不要重定向。或者,您可以在複選框中添加點擊處理程序並致電e.stopPropagation()

$("tr .checkbox").click(function(e){ 
    e.stopPropagation(); 
}); 
1

添加一個阻止傳播的單獨處理程序。

$("tr").click(function(){ 
    window.location = $(this).attr("url"); 
}) 
    .find(".checkbox").click(function(e) { e.stopPropagation(); }); 
1

停止單擊複選框上的事件傳播。嘗試這個。

$('.checkbox').click(function(e){ 
    e.stopPropagation(); 
}); 

,改變你的代碼,以

$("tr").click(function(){ 
    window.location = $(this).attr("url"); 

}); 

另外,您可以檢查目標和採取相應的行動。嘗試這個。

$("tr").click(function(e){ 
    if(!$(e.target).is(':checkbox')){ 
     window.location = $(this).attr("url"); 
    } 
});