我有把插入动态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,工作正常,这可以正常但快速向上和向下滚动,并且控件无法正常工作。
答案 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({ ..............