Если элементы, подлежащие переключению, начинаются с одного из двух классов, вы можете переключаться вперед и назад следующим образом:
$('#element_to_click').click( function(){
$('.togToo').toggleClass('classC classD');
});
К сожалению, невозможно смоделировать ссылку и все связанное с ней поведение в каждом браузере. Следовательно, единственный способ добиться желаемого - создать ссылку, которая следует за курсором вокруг элемента Вот ДЕМО: http://jsbin.com/ufugo И вот код: Я создал плагин jQuery, используя немного лучший подход, чем указано выше: http://james.padolsey.com/javascript/table-rows-as-clickable-anchors/ Вы можете захватить событие и посмотреть его код события. Но нет реального способа узнать, как браузер ведет себя при этих событиях. вам нужно удалить тег и просто использовать атрибут 'href', чтобы получить место назначения ссылки, и не выбирать тег привязки , потому что он содержит href attribute. или просто откройте новую вкладку по ссылке. Надеюсь, это вам поможет. РЕДАКТИРОВАТЬ Это простая проблема, у которой есть простое решение. Я не вижу необходимости в неприятных взломах, которые могут сломаться в некоторых браузерах или потребовать времени на обработку. Тем более, что существует изящное и простое решение CSS. Сначала демонстрация Вдохновленная решением @Nick для очень похожей проблемы, я предлагаю простой css + Решение jquery. Во-первых, вот мини-плагин, который я написал. Плагин обернет каждую ячейку ссылкой: А вот пример использования: И весь необходимый CSS: Это так просто. Вы можете использовать объект события для проверки тип щелчка мышью. В этой статье обсуждается похожая проблема. В любом случае, вот как это сделать: Вы хотите это: Это проверено в FF3.0.10, Chrome 1.0 и IE6. Я использую событие mousedown, потому что ни Firefox, ни IE не передают щелчок средней кнопкой мыши событию .click (fn). Вы можете создать ссылку и позволить ей перемещаться в вашем tr, привязавшись к событию mouveover, обновить href и позицию создать ссылку на один пиксель обновить href и положение при наведении курсора Вот кое-что, что должно сработать: вместо использования window.location используйте .click () для имитации щелчка по первому элементу внутри элемента. Кроме того, используйте условие для проверки CTRL + щелчок. Должно выглядеть так: Надеюсь, это поможет! Дэйв Ромеро Попробуйте поместить a вокруг td, а затем применить display: block Элемент CSS для td. Это должно сделать всю область td доступной для нажатия со всеми кнопками в качестве "обычной" ссылки. Пример, вероятно, лучше: Подобный подход работал в прошлом для мне, хотя это было не совсем для элементов таблицы. Не тестировал с таблицами, так что попробуйте. Я думаю, что плагин largelink сделает то, о чем вы просите. Вот статья Я бы напал на это со стороны HTML / css. Раньше это была распространенная проблема, когда большинство сайтов делали всю компоновку в виде таблиц. Сначала сделайте содержимое всех ячеек таблицы ссылками. Если вы не хотите, чтобы они выглядели как ссылки, вы можете использовать CSS, чтобы удалить подчеркивание из ячеек «без ссылок». Но они будут ссылками, что в любом случае семантически то, что вам нужно. Затем вы хотите, чтобы ссылка расширялась, чтобы заполнить всю ячейку. StackOverflow уже знает ответ на этот : В типичной таблице без пробелов между ячейками вся строка будет активна. И поскольку здесь нет никаких уловок или специальных взломов браузера, он должен работать везде.
; эта ссылка будет невидимой, поэтому пользователю будет казаться, что он нажимает на
, но на самом деле они нажимают скрытую ссылку. При использовании этого метода средняя кнопка, ctrl + щелчок и любое другое поведение остаются неизменными!
$("table tr").each(function(){
var $link = $('a:first', this).clone(true),
dim = {
x: [
$(this).offset().left,
$(this).offset().left + $(this).outerWidth()
],
y: [
$(this).offset().top,
$(this).offset().top + $(this).outerHeight()
]
}
$link
.click(function(){
$(this).blur();
})
.css({
position: 'absolute',
display: 'none',
// Opacity:0 means it's invisible
opacity: 0
})
.appendTo('body');
$(this).mouseover(function(){
$link.show();
});
$(document).mousemove(function(e){
var y = e.pageY,
x = e.pageX;
// Check to see if cursor is outside of <tr>
// If it is then hide the cloned link (display:none;)
if (x < dim.x[0] || x > dim.x[1] || y < dim.y[0] || y > dim.y[1]) {
return $link.hide();
}
$link.css({
top: e.pageY - 5,
left: e.pageX - 5
})
});
});
РЕДАКТИРОВАТЬ:
$("table#row_link tbody tr a").click(function () {
window.location = $(this).attr("href");
});
jQuery.fn.linker = function(selector) {
$(this).each(function() {
var href = $(selector, this).attr('href');
if (href) {
var link = $('<a href="' + $(selector, this).attr('href') + '"></a>').css({
'text-decoration': 'none',
'display': 'block',
'padding': '0px',
'color': $(this).css('color')
})
$(this).children()
.css('padding', '0')
.wrapInner(link);
}
});
};
$('table.collection tr').linker('a:first');
table.collection {
border-collapse:collapse;
}
$("table#row_link tbody tr").click(function () {
if((!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1)){
if (!e.ctrlKey) {
// Left mouse button was clicked without ctrl
window.location = $(this).find("a:first").attr("href");
}
}
});
$('table#row_link tbody tr').mousedown( function(e){
if(e.ctrlKey || (!$.browser.msie && e.button == 1) || ($.browser.msie && e.button == 4)){
//middle mouse button or ctrl+click
} else {
//normal left click
}
});
<table id="row_link">....</table>
<a id="onepixel" style="position:absolute;z-index:1000;width:1px;height:1px;"></a>
$("#row_link tr").mouseover(
function(event){
//update href
$("#onepixel").attr("href",$(this).find("a:first").attr("href"));
//update position, just move to current mouse position
$("#onepixel").css("top",event.pageY).css("left",event.pageX);
}
);
$("table#row_link tbody tr").click(function (e) {
if(e.ctrlKey) {
// Run Ctl+Click Code Here
} else {
$(this).children('a').eq(0).click();
}
}
<table id="row_link">
<tbody>
<tr>
<a href="link1.html"><td style="display: block;">link</td></a>
<td>info 1</td>
</tr>
<tr>
<a href="link2.html"><td style="display: block;">link</td></a>
<td>info 2</td>
</tr>
</tbody>
</table>
td a
{
дисплей: блок;
ширина: 100%;
высота: 100%;
высота строки: 100%;
}
Похожие вопросы: