怎么用javascript写这个

时间:2012-10-26 17:33:23

标签: javascript jquery scroll

我有把插入动态id到JavaScript函数的问题代码:

$('#scroll-up1, #scroll-down1').bind({ ..............

在这个例子中,我需要函数来获取我在函数

中发送的id的值
$('#scroll-up+id, #scroll-down+id').bind({ ..............

问题是引号为“或”对我不起作用,我无法正常使用函数工作正常,这个脚本让我滚动文本确定但只有问题,因为没有让我发送值从功能的ID。

编辑我的所有代码:.....

PHP AND HTML CODE

<?php

$fil_comments=file("comments.txt");

for ($i=0;$i<sizeof($fil_comments);$i++)
{

$line=explode("~",$fil_comments[$i]);

if ($i%2==0)
{
$back=1;
}
else
{
$back=2;
}

?>


<li>
<div id="web_comment_<?php echo $back?>">

<div id="web_comment_name"><?php echo $line[0];?></div>
<div class="web_comment_texto" id="scroll<?php echo $i;?>"><?php echo $line[1];?></div>
<div class="web_comment_arrow" style="margin-left:260px;" id="scroll-down<?php echo $i;?>"><img src="imagenes/comments/arrow_up.png"></div>
<div class="web_comment_arrow" style="margin-left:288px;" id="scroll-up<?php echo $i;?>"><img src="imagenes/comments/arrow_down.png"></div>

</div>
</li>


<script>
scroll_diver(<?php echo $i;?>);
</script>



<?
}

?>

JAVASCRIPT代码的功能

<script type="text/javascript">

function scroll_diver(id)
{





$(function() {




    var ele   = $('#scroll'+id);
    var speed = 30, scroll = 5, scrolling;

    $('#scroll-up'+id).mouseenter(function() {
        // Scroll the element up
        scrolling = window.setInterval(function() {
            ele.scrollTop( ele.scrollTop() - scroll );
        }, speed);
    });

    $('#scroll-down'+id).mouseenter(function() {
        // Scroll the element down
        scrolling = window.setInterval(function() {
            ele.scrollTop( ele.scrollTop() + scroll );
        }, speed);
    });


    //var a='#scroll-up'+id;
    //var b='#scroll-down'+id;


    var a='#scroll-up'+id;
    var b='#scroll-down'+id;



    //$('a,b').bind({
    //$('#scroll-up1, #scroll-down1').bind({
    //$('#scroll-up'+id+',#scroll-down'+id)

///问题在这里!!!

    $('#scroll-up'+id+', #scroll-down '+id).bind({



        click: function(e) {
            // Prevent the default click action
            e.preventDefault();
        },
        mouseleave: function() {
            if (scrolling) {
                window.clearInterval(scrolling);
                scrolling = false;
            }
        }
    });
});

}
</script>

基本上问题出在发送id的JavaScript函数行中,如果你看到PHP代码,我使用bucle来创建带有信息的滚动提示,并在每个我可以滚动他的内容,为此我调用函数进入bucle:

<script>
    scroll_diver(<?php echo $i;?>);
    </script>

但是在这行中没有发送正确的信息,如果我使用bucle获取一个特定的id,工作正常,这可以正常但快速向上和向下滚动,并且控件无法正常工作。

3 个答案:

答案 0 :(得分:2)

然后你需要看看这样的事情:

$('#scroll-up' + id + ', #scroll-down' + id).bind({ ..............

正如评论家所提到的,jQuery选择器只是字符串。您可以根据需要将它们放在一起。在这种情况下,我将id(对于最简单的示例,我假设是一个数字或其他唯一标识符)连接到#scroll-up选择器,所以如果你的id是“1”,你最终会得到一个有效的字符串,看起来像:

'#scroll-up1, #scroll-down1'
字符串连接发生后

此外,值得注意的是,如果您只是将两个对象放在同一个类中,那么您可能会获得更好的效果,然后在绑定函数中,找出所调用的项目并适当地执行滚动。

所以,如果你有:

<div class="container">
    <div id="scroll-up1" class="scroller"><!-- and code --></div>
    <div id="scroll-down1" class="scroller"><!-- and code --></div>
</div>

然后你的javascript看起来像这样,避免了连接的需要:

$('.container').on("mouseover",'.scroller', function(){
    var thisId = $(this).attr("id");

    if(thisId == "scroll-up1"){
        // do your up-scroll
    } else if(thisId == "scroll-down1") {
        // do your down-scroll
    }
});

请注意,它使用.on(),它比.bind()更受欢迎,但我们的想法是根据公共类处理它,而不是每次绑定事件时都必须修改选择器这些项目的处理程序。

答案 1 :(得分:0)

推荐的解决方案:将CLASS NAMES用于常用功能

$('.scroll-up, .scroll-down').bind({

甚至:

$('.scroll').bind({

答案 2 :(得分:-1)

var id = 38;
$('#scroll-up' + id + ', #scroll-down' + id).bind({ ..............