#jquery
#jquery
Вопрос:
я уверен, что это глупо, но я не знаю, что я делаю не так
у меня есть метод, который создает таблицу в панели asp с некоторыми элементами. Также у меня есть два события, наведение курсора мыши и щелчок, наведение курсора мыши тоже отлично работает, но css, который мне нужно установить в элементе, не отображается при четном щелчке. что я делаю неправильно, потому что я поместил оповещение в функцию и работает нормально. спасибо, что уделили время моему коду ниже.
function buildImageGallery(data) {
//boring code
$(".pnlImage tr").remove();
var tableSelector = '<table class="tableFinder" id="imageSelectorPanel">';
tableSelector = tableSelector '<tr>';
var imagesData = data.d.split(";");
for (var i = 0; i < imagesData.length; i ) {
if (i != imagesData.length - 1) {
var image = imagesData[i].split(",");
tableSelector = tableSelector '<td>' '<div id="' image[0] '" '
'class="imagePanel" style="background:url(' image[1]
');background-repeat:no-repeat;margin-left:auto;margin-right:auto;margin-top:auto;margin-bottom:auto;">' "</div>" "</td>";
}
}
tableSelector = tableSelector '</tr>';
tableSelector = tableSelector '</table>';
$(".pnlImage").append(tableSelector);
//the two events
$(".imagePanel").hover(mouseOver, mouseOut);
$(".imagePanel").click(setElement);
}
function mouseOver() {
$(this).stop(true, true).animate({
opacity: 0.25
}, 100, function () {
$(this).css('border', '2px solid black');
});
}
function mouseOut() {
$(this).stop(true, true).css('border', '0 none').animate({
opacity: 1
}, 100);
}
//this method executes but don't add the style
function setElement() {
// alert("click the element with id: " this.id);
$(this).css('border', '2px solid black');
}
Комментарии:
1. Ваш вопрос действительно неясен. Не могли бы вы попробовать вычитать то, что вы написали, и перефразировать это?
2. Я настоятельно рекомендую не использовать так много
html
разметки в вашем коде.3. @Matt Ball привет, в резюме я не знаю, почему в моем событии щелчок не устанавливает стиль css, который я ввел в свой код
Ответ №1:
Похоже, что стиль из события щелчка будет перезаписан стилями из события наведения. Итак, чтобы щелкнуть по div, вы mouseOver()
сначала запускаете, и граница устанавливается на 2px solid black
. Затем вы щелкаете, и setElement()
функция повторно устанавливает границу на 2px solid black
. Вы не видите никаких изменений. Затем вы отводите курсор от div, чтобы увидеть изменение, и запускаете mouseOut()
который удалит границу.
Я предполагаю, что вы хотите, чтобы граница сохранялась после нажатия на div. Вы могли бы установить какой-нибудь атрибут данных в div, чтобы сказать, что он выбран.
function setElement() {
$(this).css('border', '2px solid black').data('selected', true);
}
Затем проверьте это в mouseOut()
функции.
function mouseOut()
{
if (!$(this).data('selected')) {
$(this).stop(true, true).css('border', '0 none').animate({ opacity: 1}, 100);
}
}
Ответ №2:
Функция наведения курсора мыши устанавливает ту же границу css, поэтому, возможно, выполняется SetElement, но поскольку граница уже «сплошная черная в 2 пикселя», вы не видите изменений от SetElement, также пытающегося установить границу в «сплошная черная в 2 пикселя».
Попробуйте это?
В SetElement установите границу в «3px сплошной красный».
Комментарии:
1. Koopman я вижу, что проблема установлена в css, но элемент при наведении курсора при выходе выполняет функцию, есть способ проверить, когда он щелкает, не выводите курсор мыши