मैं अपनी तालिका पंक्ति को किसी चीज़ के लिंक के रूप में सेट नहीं कर सकता। मैं केवल css और html का उपयोग कर सकता हूं। मैंने अलग-अलग चीजों में पंक्ति से कुछ और करने की कोशिश की, लेकिन फिर भी यह काम नहीं कर सकता।
मैं अपनी तालिका पंक्ति को किसी चीज़ के लिंक के रूप में सेट नहीं कर सकता। मैं केवल css और html का उपयोग कर सकता हूं। मैंने अलग-अलग चीजों में पंक्ति से कुछ और करने की कोशिश की, लेकिन फिर भी यह काम नहीं कर सकता।
जवाबों:
आपके पास ऐसा करने के दो तरीके हैं:
जावास्क्रिप्ट का उपयोग करना:
<tr onclick="document.location = 'links.html';">
एंकर का उपयोग करना:
<tr><td><a href="">text</a></td><td><a href="">text</a></td></tr>
मैंने दूसरा काम किया:
table tr td a {
display:block;
height:100%;
width:100%;
}
स्तंभों के बीच मृत स्थान से छुटकारा पाने के लिए:
table tr td {
padding-left: 0;
padding-right: 0;
}
यहाँ दूसरे उदाहरण का एक सरल डेमो है: DEMO
मैंने खुद को एक कस्टम jquery फंक्शन बनाया:
<tr data-href="site.com/whatever">
$('tr[data-href]').on("click", function() {
document.location = $(this).data('href');
});
मेरे लिए आसान और परफेक्ट। उम्मीद है कि यह आपकी मदद करता है।
(मुझे पता है कि ओपी केवल CSS और HTML चाहते हैं, लेकिन jQuery पर विचार करें)
डेटा कैंटर का उपयोग करके मैट कांटोर से सहमत। ऊपर दिया गया उत्तर
data-href
या कुछ करूँगा ।
<table class='tr_link' >
और इसे .tr_link{cursor:pointer}
सर्वश्रेष्ठ उपयोग के लिए सीएसएस में दें ।
tr[data-href] { cursor: pointer }
यदि आप उस ब्राउज़र पर हैं जो इसका समर्थन करता है तो आप सीएसएस का उपयोग <a>
तालिका पंक्ति में बदलने के लिए कर सकते हैं :
.table-row { display: table-row; }
.table-cell { display: table-cell; }
<div style="display: table;">
<a href="..." class="table-row">
<span class="table-cell">This is a TD... ish...</span>
</a>
</div>
बेशक, आप ब्लॉक तत्वों को अंदर नहीं डालने तक सीमित हैं <a>
। आप इसे नियमित रूप से नहीं मिला सकते हैं<table>
यदि आपको किसी तालिका का उपयोग करना है, तो आप प्रत्येक तालिका सेल में एक लिंक डाल सकते हैं:
<table>
<tbody>
<tr>
<td><a href="person1.html">John Smith</a></td>
<td><a href="person1.html">123 Fake St</a></td>
<td><a href="person1.html">90210</a></td>
</tr>
<tr>
<td><a href="person2.html">Peter Nguyen</a></td>
<td><a href="person2.html">456 Elm Ave</a></td>
<td><a href="person2.html">90210</a></td>
</tr>
</tbody>
</table>
और लिंक पूरे सेल को भरें:
table tbody tr td a {
display: block;
width: 100%;
height: 100%;
}
यदि आप <div>
तालिका के बजाय s का उपयोग करने में सक्षम हैं , तो आपका HTML बहुत सरल हो सकता है, और आपको तालिका कक्षों के बीच लिंक में "अंतराल" नहीं मिलेगा:
<div class="myTable">
<a href="person1.html">
<span>John Smith</span>
<span>123 Fake St</span>
<span>90210</span>
</a>
<a href="person2.html">
<span>Peter Nguyen</span>
<span>456 Elm Ave</span>
<span>90210</span>
</a>
</div>
यहाँ सीएसएस है कि <div>
विधि के साथ चला जाता है :
.myTable {
display: table;
}
.myTable a {
display: table-row;
}
.myTable a span {
display: table-cell;
padding: 2px; /* this line not really needed */
}
तत्व की onClick
विशेषता के लिए कुछ जावास्क्रिप्ट असाइन करने का सामान्य तरीका है TR
।
यदि आप जावास्क्रिप्ट का उपयोग नहीं कर सकते हैं, तो आपको एक चाल का उपयोग करना चाहिए:
प्रत्येक TD
पंक्ति में एक ही लिंक जोड़ें (लिंक सेल में सबसे बाहरी तत्व होना चाहिए)।
लिंक को ब्लॉक तत्वों में बदलें: a { display: block; width: 100%; height: 100%; }
उत्तरार्द्ध लिंक को पूरे सेल को भरने के लिए मजबूर करेगा इसलिए कहीं भी क्लिक करने से लिंक आ जाएगा।
आप <td>
एक <a>
टैग के साथ एक तत्व को लपेट नहीं सकते हैं , लेकिन आप फ़ंक्शन onclick
को कॉल करने के लिए इवेंट का उपयोग करके समान कार्यक्षमता को पूरा कर सकते हैं । एक उदाहरण यहाँ मिलता है , कुछ इस प्रकार है:
<script type="text/javascript">
function DoNav(url)
{
document.location.href = url;
}
</script>
और इसे अपनी तालिका में इस तरह जोड़ें:
<tr onclick="DoNav('http://stackoverflow.com/')"><td></td></tr>
सरविलियम का उत्तर मुझे सबसे अच्छा लगता है। मैंने हॉटकी Ctrl + LeftClick के लिए समर्थन के साथ जावास्क्रिप्ट में सुधार किया (नए टैब में पृष्ठ खोलता है)। मैक ctrlKey
द्वारा ईवेंट का उपयोग पीसी द्वारा किया जाता है metaKey
।
जावास्क्रिप्ट
$('body').on('mousedown', 'tr[url]', function(e){
var click = e.which;
var url = $(this).attr('url');
if(url){
if(click == 2 || (click == 1 && (e.ctrlKey || e.metaKey))){
window.open(url, '_blank');
window.focus();
}
else if(click == 1){
window.location.href = url;
}
return true;
}
});
उदाहरण
मुझे पता है कि यह प्रश्न पहले ही उत्तर दे दिया गया है लेकिन मुझे अभी भी इस पृष्ठ पर कोई समाधान पसंद नहीं है। JQuery का उपयोग करने वाले लोगों के लिए मैंने एक अंतिम समाधान बनाया है जो आपको तालिका पंक्ति को <a>
टैग के समान व्यवहार देने में सक्षम बनाता है ।
यह मेरा समाधान है:
jQuery आप इसे उदाहरण के लिए एक मानक शामिल जावास्क्रिप्ट फ़ाइल में जोड़ सकते हैं
$('body').on('mousedown', 'tr[url]', function(e){
var click = e.which;
var url = $(this).attr('url');
if(url){
if(click == 1){
window.location.href = url;
}
else if(click == 2){
window.open(url, '_blank');
window.focus();
}
return true;
}
});
HTML अब आप <tr>
अपने HTML के अंदर किसी भी तत्व पर इसका उपयोग कर सकते हैं
<tr url="example.com">
<td>value</td>
<td>value</td>
<td>value</td>
<tr>
document.querySelector('tr[url]').addEventListener("mousedown", function(e){ var click = e.which; var url = this.getAttribute("url"); if(url){ if(click == 1){ window.location.href = url; } else if(click == 2){ window.open(url, '_blank'); window.focus(); } return true; } });
जब मैं <tr>
एक लिंक के साथ अनुकरण करना चाहता हूं, लेकिन html मानकों का सम्मान करते हुए, मैं ऐसा करता हूं।
HTML:
<table>
<tr class="trLink">
<td>
<a href="#">Something</a>
</td>
</tr>
</table>
सीएसएस:
tr.trLink {
cursor: pointer;
}
tr.trLink:hover {
/*TR-HOVER-STYLES*/
}
tr.trLink a{
display: block;
height: 100%;
width: 100%;
}
tr.trLink:hover a{
/*LINK-HOVER-STYLES*/
}
इस तरह, जब कोई टीआर पर अपने माउस के साथ जाता है, तो सभी पंक्ति (और इस लिंक) को हॉवर शैली मिलती है और वह यह नहीं देख सकता है कि कई लिंक हैं।
आशा किसी की मदद कर सकती है।
इधर उधर करना
//Style
.trlink {
color:blue;
}
.trlink:hover {
color:red;
}
<tr class="trlink" onclick="function to navigate to a page goes here">
<td>linktext</td>
</tr>
इन पंक्तियों के साथ शायद कुछ? हालाँकि यह JS का उपयोग करता है, लेकिन यह केवल एक पंक्ति (tr) क्लिक करने योग्य है।
जब तक आपके पास एक एंकर टैग के साथ एक एकल कक्ष नहीं है जो पूरे सेल को भरता है।
और फिर, आपको किसी भी तरह एक तालिका का उपयोग नहीं करना चाहिए।
इस सूत्र और कुछ अन्य को पढ़ने के बाद मैं जावास्क्रिप्ट में निम्नलिखित समाधान के साथ आया:
function trs_makelinks(trs) {
for (var i = 0; i < trs.length; ++i) {
if (trs[i].getAttribute("href") != undefined) {
var tr = trs[i];
tr.onclick = function () { window.location.href = this.getAttribute("href"); };
tr.onkeydown = function (e) {
var e = e || window.event;
if ((e.keyCode === 13) || (e.keyCode === 32)) {
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
this.click();
}
};
tr.role = "button";
tr.tabIndex = 0;
tr.style.cursor = "pointer";
}
}
}
/* It could be adapted for other tags */
trs_makelinks(document.getElementsByTagName("tr"));
trs_makelinks(document.getElementsByTagName("td"));
trs_makelinks(document.getElementsByTagName("th"));
इसका उपयोग करने के लिए href को tr / td / th में रखें जिसे आप क्लिक करने योग्य होने की इच्छा रखते हैं जैसे <tr href="http://stackoverflow.com">
:। और सुनिश्चित करें कि tr तत्व बनने के बाद ऊपर की स्क्रिप्ट निष्पादित की गई है (इसके स्थान या घटना संचालकों का उपयोग करके)।
नकारात्मक पक्ष यह है कि टीआरएस पूरी तरह से व्यवहार नहीं करेगा जैसा कि डिव के साथ लिंक के रूप में होता है संपादित करें: मैंने onkeydown, भूमिका और tabIndex सेट करके कीबोर्ड नेविगेशन कार्य किया है, आप केवल माउस की आवश्यकता होने पर उस हिस्से को हटा सकते हैं। हालांकि, होवरिंग पर वे स्टेटसबार में URL नहीं दिखाएंगे।display: table;
, और वे कीबोर्ड-चयन या स्टेटस टेक्स्ट नहीं होंगे।
आप विशेष रूप से लिंक TR को "tr [href]" CSS चयनकर्ता के साथ स्टाइल कर सकते हैं।
मेरे पास दूसरा रास्ता है। खासकर यदि आपको jQuery का उपयोग करके डेटा पोस्ट करने की आवश्यकता है
$(document).on('click', '#tablename tbody tr', function()
{
var test="something";
$.post("ajax/setvariable.php", {ID: this.id, TEST:test}, function(data){
window.location.href = "http://somepage";
});
});
चर सेट करें चर को उन सत्रों में सेट करें, जिस पृष्ठ पर आप पढ़ने जा रहे हैं और जिस पर कार्य कर सकते हैं।
मैं वास्तव में एक खिड़की के स्थान पर सीधे पोस्ट करने का एक तरीका पसंद करूंगा, लेकिन मुझे नहीं लगता कि यह संभव है।
क्या आप पंक्ति में A टैग जोड़ सकते हैं?
<tr><td>
<a href="./link.htm"></a>
</td></tr>
क्या यह आप पूछ रहे हैं?