2011-06-29 114 views
3

我試圖在發生輸入更改時觸發父級單擊事件。 下面是我的代碼,它是點擊兩次Click事件。在表中觸發兩次事件

    $('TABLE TBODY TR TD INPUT').change(function() 
        { 
        $(this).parents('TD').click(); 
        }); 
        $('TABLE TBODY TR TD').click(function() 
        { 
        alert("Clicked me..."); 
        }); 

這是我的HTML代碼

 <table> 
     <tr><td>foo<input type="radio"></td><td>foo<input type="checkbox"></td></tr> 
     <tr><td>foo<input type="radio"></td><td>foo<input type="checkbox"></td></tr> 
     <tr><td>foo<input type="radio"></td><td>foo<input type="checkbox"></td></tr> 
     </table> 

哪裏錯...

+0

爲什麼不只是使用.change()?而不是同時使用.click()和.change()? – rrapuya

回答

1
$('TABLE TBODY TR TD INPUT').change(function() { 
    clicky(this.parents('TD')); 
}); 
$('TABLE TBODY TR TD').click(function clicky(parentElement) { 
    alert("Clicked me..."); 
}); 

所以input也是td所以兩者都被點擊。 這隻返回一個警報,但我有一種感覺,你不想警惕,而是改變父母的元素。

,但我敢打賭,你可能需要以下

$('TABLE TBODY TR TD INPUT').change(function() { 
    clicky($(this).parents('TD')); 
}); 

function clicky(parentElement) { 
    $(parentElement).toggleClass('clicked'); 

}; 

活生生的例子:http://jsfiddle.net/nFtzJ/

每次輸入的變化,家長 <td>已經該類.clicked切換,當然這可以在時間

這裏被改變,但在生產中使用alert();幾乎是一種失禮。

+1

爲記錄,這個問題被接受之前 **,但我敢打賭,你可能想要以下**添加。 – matchew

+0

謝謝Matchew – Reddy

+0

沒問題,很高興我能幫上忙。 – matchew

1

嘗試類似。 this

$('TABLE TBODY TR TD INPUT').change(function() { 
    alert("Clicked me..."); 
}); 
+0

呃..?爲什麼你的jsfiddle鏈接到我昨晚爲另一個問題提出的jsfiddle? http://stackoverflow.com/questions/6514985/jquery-slideup-problem/6515002#6515002 – matchew

+0

我不知道......那不是我所做的鏈接.. – rrapuya

+0

哈哈,它的那種有趣...和奇怪。 – matchew