2015-12-01 2 views
-2

Я создаю локатор магазина для веб-сайта, и я получил окно всплывающей подсказки, в котором отображается сообщение электронной почты, которое я хочу сделать ссылкой. это HTML:Javascript .click() не работает

<div class="gm_popup"> 
    <span class="address"> Address</span><br> 
    <span class="city"> City</span><br> 
    <span class="phone"> 123 456</span><br> 
    <span class="email"> [email protected]</span><br> 
</div> 

и это ЯШИ:

jQuery(document).ready(function(){ 

    var old_focus_and_popup = focus_and_popup; 

    focus_and_popup = function (id){ 
    return_val = old_focus_and_popup (id); 

    setTimeout(function(){ 
     jQuery("#store_map .gm_popup .email").click(function(){ 
     var text = jQuery(this).text(); 
     document.location = "mailto:" + text.trim(); 
     }); 

     jQuery(".gm_popup .email").css('text-decoration','underline').css('color','#2aa8e0'); 
    }, 200); 
    return return_val ; 
    } 
}); 

любая идея, почему это не было бы работать? после добавления некоторых console.logs кажется, что он доходит до .click, но не входит внутрь функции. Благодаря

+3

Почему вы динамически установки 'MailTo:' функцию? Почему бы просто не определить его как гиперссылку в первую очередь? –

+4

Почему у вас есть событие click в 'setTimeout'? –

+0

его использование shopify и способ его создания [электронная почта]. когда вы пытаетесь поместить html вокруг него, он создает весь диапазон как ссылку, а не значение внутри –

ответ

1

Вы регистрируете события нажатия

Это не будет вызывать до любого щелчка производится вручную.

Если вы хотите получить авто нажмите попробуйте, как это после регистрации события щелчка

jQuery("#store_map .gm_popup .email").click(); 

или

jQuery("#store_map .gm_popup .email").trigger("click"); 
+0

он не входит в функцию щелчка. ive положить console.log, но его не отображать –

+0

@AlexMurray вы можете предоставить скрипку? –

0

Ну у вас есть весь код события внутри функции, и вы никогда не в конечном итоге вызова эта функция. Поэтому я внес некоторые изменения, удалил setTimeout, поскольку это было лишним. Кроме того, сделал вызов этой функции.

<div id="store_map"> 
    <div class="gm_popup"> 
    <span class="address"> Address</span><br> 
    <span class="city"> City</span><br> 
    <span class="phone"> 123 456</span><br> 
    <span class="email"> [email protected]</span><br> 
</div> 

</div> 


jQuery(document).ready(function(){ 



    focus_and_popup = function (id){ 
    //return_val = old_focus_and_popup (id); 


     jQuery("#store_map .gm_popup .email").click(function(){ 
     var text = jQuery(this).text(); 
     console.log("HERE"); 
     document.location = "mailto:" + text.trim(); 
     }); 

     jQuery(".gm_popup .email").css('text-decoration','underline').css('color','#2aa8e0'); 

    return return_val ; 
    } 
    focus_and_popup(); 
    var old_focus_and_popup = focus_and_popup; 
}); 
+0

im получение этой ошибки Неиспользуемый ReferenceError: return_val не определен какой-либо идеи, почему? –

+0

Извините uncomment // return_val right –

0

Я написал для вас фрагмент, который просто работает.

jQuery(document).ready(function() { 
 

 
     jQuery(".gm_popup .email").click(function() { 
 
     alert('hello'); 
 
     var text = jQuery(this).text(); 
 
     document.location = "mailto:" + text.trim(); 
 
     }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="gm_popup"> 
 
    <span class="address"> Address</span> 
 
    <br> 
 
    <span class="city"> City</span> 
 
    <br> 
 
    <span class="phone"> 123 456</span> 
 
    <br> 
 
    <span class="email"> [email protected]</span> 
 
    <br> 
 
</div>

+0

его не попадает в функцию щелчка по какой-то причине –

+0

Я не уверен, но, возможно, вы создаете бесконечный цикл между focus_and_popup и old_focus_and_popup .. – sfiore

Смежные вопросы