繁体   English   中英

在Leaflet Maps Popup中启动Jquery UI对话框的问题

[英]Issue with launching Jquery UI Dialog box in Leaflet Maps Popup

在我的Leaflet Map中,我希望弹出窗口绑定到具有缩略图的图层。

当用户单击缩略图时,将出现一个带有该图像较大版本的灯箱。

我选择使用Jquery UI中的对话框来执行此操作。

JS Fiddle关于我到目前为止的一切

/// I am using a leaflet JS Fiddle Template was provided by SO User Asad here:
/// http://stackoverflow.com/a/13699060/3679978
/// I THINK I understand the concept he explained about dynamically generating Javascript.


// Load Map stuff.
var map = L.map('map_canvas').setView([51.505, -0.09], 13);
L.tileLayer('http://{s}.tiles.mapbox.com/v3/mapbox.mapbox-light/{z}/{x}/{y}.png', {
    attribution: 'Imagery from <a href="http://mapbox.com/about/maps/">MapBox</a> &mdash; &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',
    maxZoom: 18,
}).addTo(map);

var marker = L.marker([51.5, -0.09]).addTo(map);

// Create an element to hold all your text and markup
var container = $('<div />');

// Create var to hold html string for thumbnail
// Originally Based off this: http://stackoverflow.com/a/4452494/3679978
var tempimg = '<a class="preview" href="#" /><div class="myImage"><img src="http://www.w3schools.com/images/pulpit.jpg" alt="myimage" width="120" height="90"/></div>';

// Delegate all event handling for the container itself and its contents to the container
container.on('click', '#button_pdf', function() {
    alert("test");
});

// same as above but for class myImage on line 20

container.on('click', '.myImage', function() {
    $('div.myImage').dialog();
});

// Insert whatever you want into the container, using whichever approach you prefer
 container.html("This is a link: <input id='button_pdf' type='button' value='Click to test' />."+ tempimg);
// container.append($('<span class="bold">').text(" :)"))

// Insert the container into the popup
marker.bindPopup(container[0]);

我认为问题很明确:

  1. 打开时,“ jQuery UI”对话框的行为异常
  2. 关闭对话框后,缩略图消失。

在Javascript,JQuery和Leaflet上仍然很新。 请指教。

注意:如果在弹出问题中对我的图像有更好的解决方案,我很乐意听到。

谢谢!

弄清楚了:

编辑:这是JSFiddle: http : //jsfiddle.net/8Lnt4/52/

//Creates the div element in jQuery
var container = $('<div/>'); 


// Creates a variable holding html string to go in above container
// Note I made the same image thats going to be enlarged into a smaller 120x90 thumbnail 
var tempimg = '<div id="dialog" style="display: none;"><img id="image" src=""/></div><div class="myImage"><img src="http://www.w3schools.com/images/pulpit.jpg" alt="myimage" width="120" height="90"/></div> Click to enlarge';


// Upon clicking the .myImage Class in the container (which is the thumbnail) Open a jQueryUI Dialog...
container.on('click', '.myImage', function() { $('#dialog').dialog(
//...which upon when it's opened...  
  {open: function(){
///... assign a variable that can acess the div id 'image'...
  imageTag = $('#image'); 
///... and set the image src in #image (note that it'll be the fullsize this time)...
  imageTag.attr("src","http://www.w3schools.com/images/pulpit.jpg");
},closeOnEscape: true, modal:true});
 });

container.html(tempimg);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM