以下是触发滚动事件的静态示例 它将提醒“动态选择器”,在这种情况下的警报结果是:
#WordPanel #AZ-List div div div.ui-jqgrid-bdiv
(这是正确的,它与下面示例中输入的静态选择ive相同)
$("#WordPanel #AZ-List div div div.ui-jqgrid-bdiv").scroll(function() {
alert("#"+$(".left .active").val()+"Panel #"+$("#"+$(".left .active").val()+" div ul li.CmdActive").html()+" div div div.ui-jqgrid-bdiv");
});
我现在将获取alert()的内容;并将其用作动态选择器,当我滚动相同的滚动条时,它不会触发 (请注意,下面的选择器的值与上面示例中使用的静态值完全相同。)
$("#"+$(".left .active").val()+"Panel #"+$("#"+$(".left .active").val()+" div ul li.CmdActive").html()+" div div div.ui-jqgrid-bdiv").scroll(function() {
alert("Working");
});
..关于它的运作方式的更多细节;
我有两个div并排,有一个顶部导航栏+按钮控制左侧div,这些控制左div的内容。
默认情况下,第一个子菜单(由左边的内容填充(由左边的内容控制)选中顶部导航栏))选项。此子菜单选项控制右div的内容(通过ajax加载正确的内容)
我正在使用.html(数据);将内容添加到正确的div中。内容是jquery和html代码。
此时加载了上面的代码问题,当加载了正确的div'内容时。我需要与一个选择器匹配的事例(动态)
#WordPanel #JK-List div div div.ui-jqgrid-bdiv
#WordPanel #AZ-List div div div.ui-jqgrid-bdiv
#AccountPanel #Password div div div.ui-jqgrid-bdiv
#AccountPanel #UserName div div div.ui-jqgrid-bdiv
在这个阶段,问题是,它会默认选择第一个结果,没有别的,在这种情况下它会匹配:
#WordPanel #JK-List div div div.ui-jqgrid-bdiv
且不匹配
#WordPanel #AZ-List div div div.ui-jqgrid-bdiv
即使我有#AZ-List作为匹配结果(通过在chrome控制台中提示选择器) 我很可能会解决这个问题的解决方案,将有一个隐藏的输入,它将保存子菜单文本(.html())的值,并从那里开始。
答案 0 :(得分:0)
我唯一能想到的是动态选择器内容受实际滚动的影响。
尝试将选择器放入变量并在使用之前提醒它,以确保它符合您的要求。
var selector = "#"+$(".left .active").val()+"Panel #"+$("#"+$(".left .active").val()+" div ul li.CmdActive").html()+" div div div.ui-jqgrid-bdiv";
alert(selector);
$(selector).scroll(function() {
alert("Working");
});
以上是否提醒您想要的选择器?
答案 1 :(得分:0)
我想知道是否有一些隐形字符没有出现在警报中。
也许尝试修剪您通过.val()
和.html()
获得的文字。
var val = $.trim( $(".left .active").val() );
var html = $.trim( $("#"+ val +" div ul li.CmdActive").html() );
console.log( val, html ); // check the console to verify the values
$("#"+ val +"Panel #"+ html +" div div div.ui-jqgrid-bdiv").scroll(function() {
alert("Working");
});
我认为你需要缓存$(".left .active")
,因为你要两次调用它。
此外,在您的选择器中,您有一个元素ID从另一个元素ID下降。这应该是不必要的,因为无论如何ID必须是唯一的。不需要指定所需的祖先。
所以:
#WordPanel #AZ-List div div div.ui-jqgrid-bdiv
可能是:
#AZ-List div div div.ui-jqgrid-bdiv