Переменные и jquery: как собирать значения и использовать их (часть 3) - PullRequest
0 голосов
/ 14 сентября 2011

ок, ребята, У меня был последний пост по вопросу переменных и jquery: как захватить значение и использовать их (часть 3) . Вы можете найти другие вопросы о поиске переменных и jquery: как захватывать значения и использовать их (часть 1) и переменных и jquery: как захватывать значения и использовать их (часть 2) .

Я должен был сделать: 1. захватить значение из списка ul-li; 2. вставить его в глобальную переменную ( не был успешным ); 3. используйте эту переменную для другой функции щелчка.

Теперь я представляю свой код решения (с помощью сообщества), который звучит, но я хотел бы оптимизировать его.

У меня есть список городов с указанием мыши по событию:

<ul id="country_list" onmouseover="cl();">
        <li><a id="pulsante1" href="#">Roma</a>
        <li><a id="pulsante2" href="#">Milano</a>
        <li><a id="pulsante3" href="#">Venezia</a

это мой CSS:

.selected 
     {
     background-color: #FFFFFF;
     }

начать функцию с комментария:

 function cl(){
     $('.map').maphilight(); // call a plug-in to illuminate the maps

       $('#country_list li a').mouseover(function(e){ //on mouseover over the list

    // change background color at the element of the list over the mouse is 
       $( e.target ).addClass('selected');  

    //put id value in a variable. I'm going to capture pulsante1 for example more #
        var $regionMap = '#' + e.target.id; 

    // put the value 
        var $variab = '#'+ e.target.innerHTML;

           //control
        //alert(regionMap);
        // alert (variab);

// this part is the plugin for highlight some particular areas (the cities' areas). form here to...
          $($regionMap).mouseover(function(a) {
            $($variab).mouseover();
            });
            $($regionMap).mouseout(function(a) {
            $($variab).mouseout();
            }); 
        });
//... here

//remove background color 
        $('#country_list li a').mouseout(function(e){
         $( e.target ).removeClass('selected');
        });     

// mousedown function. 
         $('#country_list li a').mousedown( function(e) {

         // e.target is the element you clicked, give me HTML value (Roma for example) 

        var $variabile = e.target.innerHTML;

    var $alfa= '#' + $variabile;  // Roma is now #Roma  

      // alert("You entered: " + $alfa); //control

    //control   dialog($alfa); // this call a dialog function giving its *$alfa* value
     });
    }

ки. это мои проблемы:

  1. Мне не нравится использовать onmouseover здесь <ul id="country_list" onmouseover="cl();">, но, похоже, он не работает по-другому ('#country_list'). Mouseover не работает Идеи

  2. Я бы хотел разделить функцию cl () на относительную часть в mousedown. Для этого мне нужно иметь две глобальные переменные со значением:

    а. id li (например, pulsante1 ). Для меня это должно быть regionMap . б. имя ли (например рома ). Для меня это должно быть переменная .

но я не знаю, как получить глобальную переменную! Я объявил их в <head></head> между <script> regionMap=""; variab="";

Я попробовал whit $ впереди и во многих других случаях, но все мои предположения не были выполнены ...

Так у вас есть помощь для меня?

Спасибо

1 Ответ

0 голосов
/ 14 сентября 2011

Для вашей первой проблемы

вместо использования атрибута onmouseover лучше связать событие mouseover с объектом jQuery. Вы можете сделать это, используя следующий код:

$('ul#country_list').bind('mouseover', function () { // do what you want to do on mouse over });

Вы также можете сначала определить функцию, а затем использовать ее в качестве второго аргумента для функции связывания. Например:

var cl = function () { // do something };
$('ul#country_list').bind('mouseover', cl);

Тогда твоя вторая проблема, я не уверен, что ты имеешь в виду под "относительной деталью в mousedown". Но для глобальных переменных вы можете сделать это по-разному.

То, что я всегда люблю делать (обратите внимание, это пример того, как я делаю это не стандартно):

Создайте пустой объект в переменной окна, например:

window.globals = {};
function test () {
    window.globals.test = 'this is available everywhere!';
}
test();
console.log(window.globals);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...