2010-03-03 12 views
12

बस एक (उम्मीद) त्वरित प्रश्न, मेरे पास निम्न HTML कोड:एक तालिका पंक्ति (tr) क्लिक करने योग्य jQuery के साथ बनाना (एक एक href लिंक के साथ, और मंडराना !?)

<tr> 
<td><img src="img/icons/file_pdf.png"></td> 
<td><a href="../upload/1267473577.pdf">Bulletin 1st March 2010</a></td> 
<td>(01/03/10)</td> 
</tr> 

आदर्श रूप में मैं ' डी jQuery का उपयोग करके एक href लिंक को पकड़ने और इसे बनाने के लिए एक तरीका है कि इससे कोई फर्क नहीं पड़ता कि आप उस विशेष तालिका पंक्ति पर क्लिक करते हैं, यह आपको उस लिंक पर ले जाएगा।

क्या ऐसा करने का कोई तरीका है? मैं इसे एक पूर्ण अंतिम उपाय के रूप में icky इनलाइन जावास्क्रिप्ट के माध्यम से कर सकता हूं, लेकिन jQuery के बारे में पता लगाने के बाद से मुझे यह साफ और अविभाज्य तरीके से करने में सक्षम होने का विचार पसंद है :-)

उत्तर

18

मान लीजिए कि यह एक "सामान्य" लिंक है (नहीं एक जावास्क्रिप्ट ट्रिगर) इस के लिए पर्याप्त होगा:

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

आप शायद किसी तरह से उपयोगकर्ता के लिए इस व्यवहार बातचीत करना चाहते हैं जाएगा। पंक्ति पर होवर करते समय न्यूनतम दृष्टिकोण कर्सर को बदल देगा।

+1

+1: बिल्कुल मेरी तरह। – Joel

+0

यह बहुत अच्छा है, धन्यवाद क्लेटस! मैं इसका उपयोग करूंगा, लेकिन विभिन्न राज्यों के लिए कुछ अलग-अलग वर्गों को भी जोड़ूंगा और होवर पर उनके बीच स्विच कर सकता हूं - पृष्ठभूमि रंग बदल सकता हूं, और जैसा कि आपने सुझाव दिया है कर्सर भी। – Nick

+2

इस समाधान (और अन्य सभी जिन्हें मैंने पाया है) में समस्या यह है कि आप मान रहे हैं कि पंक्ति पर सभी क्लिक ब्राउज़र में लिंक स्थान लोड करना चाहिए। राइट-क्लिक के बारे में क्या? या cmd/ctrl + क्लिक? ये मूल रूप से इस व्यवहार का कारण नहीं बनेंगे ... – Beejamin

2

यदि आपके पास तालिका के अंदर एक और लिंक है, तो डिलीट लिंक की तरह, आप ईवेंट ऑब्जेक्ट का उपयोग यह जांचने के लिए कर सकते हैं कि उपयोगकर्ता उस विशेष लिंक पर क्लिक करता है और पुनर्निर्देशन से बचता है।

उदाहरण HTML:

<tr title="http://path/to/download"> 
    <td><img src="img/icons/file_pdf.png"></td> 
    <td><a href="/path/to/delete">Delete</a></td> 
    <td>(01/03/10)</td> 
</tr> 

उदाहरण जावास्क्रिप्ट:

$("tr").click(function(event) { 
    if(event.target.nodeName != "A"){ 
    window.location.href = $(this).attr("title"); 
    } 
}); 

आमतौर पर मेरी टेबल संपादित करें और हटाएं साथ एक कार्रवाई सेल है, तो मैं पंक्ति क्लिक करें घटना का उपयोग शो कार्रवाई करने के लिए पुनर्निर्देशित करने के लिए।

4

मुझे यह समाधान मेरे लिए अच्छा काम करने के लिए मिला।

$('table tr').live("click",function(e){ 
    if (e.target instanceof HTMLInputElement || e.target instanceof HTMLAnchorElement){ 
     return; 
     } 
     alert('works'); 
});