jQuery: изменение цвета не работает с Chrome и Safari - PullRequest
1 голос
/ 28 апреля 2010

Не могли бы вы объяснить, почему следующий код не работает в Chrome и Safari, а только в Firefox?

if ($(this).css("color") == "Fuchsia"){ $(this).css("color","#000000"); }

Это ссылка:

http://www.sanstitre.ch/drupal/portfolio?tid[0]=38

Если вы прокрутите вниз и вверх, вы увидите, что «Вечный тур» снова становится фиолетовым и черным, потому что он больше не выбран.(с FIrefox)

С Chrome и Safari он остается черным.

Ответы [ 4 ]

0 голосов
/ 07 апреля 2011

    function toggleNotesStyle(obj) {

    var currentColor = rgb2hex(jQuery(obj).css('color'));

    if (currentColor == '#000000') {  // if black, change to red
        jQuery(obj).css('color', '#ff0000');
    }
    else {  // if a different color (red in our case), change to black
        jQuery(obj).css('color', '#000000');
    }
}

function rgb2hex(rgb) {
    if (/^#[0-9a-f]{3}([0-9a-f]{3})?$/i.test(rgb)) {
        // matches on IE hex color (ie: #000000)  .. and no pun intended for "ie"
        return rgb;
    }
    // changes "rgb(#,#,#)' to hex for Mozilla, Chrome and Safari
        rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
    // found this on another site, but don't know why it's different
    //rgb = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/);
    return "#" +
        ("0" + parseInt(rgb[1], 10).toString(16)).slice(-2) +
        ("0" + parseInt(rgb[2], 10).toString(16)).slice(-2) +
        ("0" + parseInt(rgb[3], 10).toString(16)).slice(-2);
}

var timer;
toggleTimer();

function toggleTimer()
{
    if (document.getElementById("<%=fullDataEntryNotes.ClientID%>")) {
        var fullDataEntryNotes = document.getElementById("<%=fullDataEntryNotes.ClientID %>");
        toggleNotesStyle(fullDataEntryNotes);
    }

    timer = window.setTimeout('toggleTimer()', 750);
}

HTML-код ломает мой пост, поэтому я объясню, что находится в HTML здесь. Сделайте тег div и поместите в него текст. Затем стилизуйте ваш тег div, чтобы он изначально имел атрибут style.color, равный # 000000 (черный). Затем каждые 750 миллисекунд он будет переключаться с черного на красный, с черного на красный и т. Д.

0 голосов
/ 28 апреля 2010

Попробуйте это

if ($(*).css("color") == "fuchsia"){ $(this).css("color","#000000"); }
0 голосов
/ 28 апреля 2010

Попробуйте записать его строчными буквами: фуксия.

0 голосов
/ 28 апреля 2010

Я бы проследил, что возвращает $(this).color(), и увидел бы, но я бы сказал, что основная проблема в том, что chrome / safari оба возвращают hex code, поэтому сравнение с string не работает.

попробуй сравнить с #FF00FF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...