views:

21

answers:

2

I have modal and I want to insert in modal view some scrollable text .BUt scrollLeft not work in modal view but works if I put it on main page, not in modal view.

<div id="userList">
    <div class="user">

        <a href="#?w=500" rel="popup1" class="poplight">Open Modal View</a>
    </div>

</div>

<script>
$(document).ready(function(){

    //When you click on a link with class of poplight and the href starts with a # 
    $("#userList a").children().each(function(idy) {

        var popID = $(this).attr('rel'); //Get Popup Name
        var popURL = $(this).attr('href'); //Get Popup href to define size

        //Pull Query & Variables from href URL
        var query= popURL.split('?');
        var dim= query[1].split('&');
        var popWidth = dim[0].split('=')[1]; //Gets the first query string value

        //Fade in the Popup and add close button
        $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) }).prepend('<a href="#" class="close"><img src="close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>');

        //Define margin for center alignment (vertical + horizontal) - we add 80 to the height/width to accomodate for the padding + border width defined in the css
        var popMargTop = ($('#' + popID).height() + 80) / 2;
        var popMargLeft = ($('#' + popID).width() + 80) / 2;

        //Apply Margin to Popup
        $('#' + popID).css({ 
            'margin-top' : -popMargTop,
            'margin-left' : -popMargLeft
        });

        //Fade in Background
        $('body').append('<div id="fade"></div>'); //Add the fade layer to bottom of the body tag.
        $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); //Fade in the fade layer 

        return false;
    });


    //Close Popups and Fade Layer
    $('a.close, #fade').live('click', function() { //When clicking on the close or fade layer...
        $('#fade , .popup_block').fadeOut(function() {
            $('#fade, a.close').remove();  
    }); //fade them both out

        return false;
    });


});

</script>


<style>
  div.demo {
  background:#CCCCCC none repeat scroll 0 0;
  border:3px solid #666666;
  margin:5px;
  padding:5px;
  position:relative;
  width:200px;
  height:100px;
  overflow:auto;
  }
  p { margin:10px;padding:5px;border:2px solid #666;width:1000px;height:1000px; }
    </style>



<div  class="popup_block">


  <div class="demo"><h1>lalala</h1><p>Hello</p></div>
<script>$("div.demo").scrollLeft(300);
</script>


</div>
A: 

Make sure that the page you are trying to scroll is actually the one containing content. Modal plugins usually put a lot of extra divs on the one that you call the function on, and its possible that the actual content of the modal window is not in the div you think it is.

Ryan French
I checked it using console.log($(this)) when mouseover function called.It calls mouseover function but scrollLeft() does not works.
Meko
Are you using a plug-in of some form for creating the modal windows? If not, I would go with SimpleModal (http://www.ericmmartin.com/projects/simplemodal/). I tried to get the demo code going to see what you were doing but clicking on the link doesnt open up a modal for me (after I added in the jQuery library).
Ryan French
A: 

I solved it. My mistake was using $(document).ready(function(){}); on top of .js file. I remove it and created
$("div#photoAlbum").mousemove(function(e){}); fnction. Now it is calling my scrollLeft function when I move mouse on exact div.

Meko