jQuery-动态选择器,不确定为什么不触发

jQuery-动态选择器,不确定为什么不触发,jquery,jquery-selectors,Jquery,Jquery Selectors,下面是我触发滚动事件的静态示例。 它将向“动态选择器”发出警报,这种情况下的警报结果为: #WordPanel #AZ-List div div div.ui-jqgrid-bdiv 没错,它与下面示例中输入的静态select相同 $("#WordPanel #AZ-List div div div.ui-jqgrid-bdiv").scroll(function() { alert("#"+$(".left .active").val()+"Panel #"+$("#"+$(".le

下面是我触发滚动事件的静态示例。 它将向“动态选择器”发出警报,这种情况下的警报结果为:

#WordPanel #AZ-List div div div.ui-jqgrid-bdiv
没错,它与下面示例中输入的静态select相同

$("#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");
});
现在,我将介绍警报的内容;并将其用作动态选择器,当我滚动相同的滚动条时,它不会触发。 请注意,下面选择器的值与上面示例中使用的静态选择器的值完全相同

$("#"+$(".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内容填充的第一个子菜单。此子菜单选择控制右div的内容。右内容通过ajax加载

我正在使用.htmldata;要将内容添加到右边的div中,内容中有jquery和html代码

当右div的内容被加载时,上面的代码问题就被加载了

在这一阶段,问题是,默认情况下,它将选择第一个结果,而不选择其他结果,在这种情况下,它将匹配:

#WordPanel #JK-List div div div.ui-jqgrid-bdiv
不匹配

#WordPanel #AZ-List div div div.ui-jqgrid-bdiv
甚至有一次,我将AZ列表作为匹配结果,并提醒chrome控制台中的选择器
对于这个问题,我最有可能采取的解决方案是,使用一个隐藏的输入来保存子菜单text.html的值,然后从那里开始。

我唯一能想到的是,动态选择器内容受实际滚动的影响

尝试将选择器放入变量中,并在使用它之前发出警告,以确保它是您想要的

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");
});

上面的警告是否提醒了您想要的选择器?

我想知道是否有一些不可见的字符没有出现在警告中

也许可以尝试修剪通过.val和.html获得的文本

我想您还是要缓存$.left.active,因为您已经调用了两次

此外,在选择器中,一个元素ID从另一个元素ID递减。这应该是不必要的,因为ID无论如何都必须是唯一的。不需要指定您想要的祖先

因此:

可以是:

#AZ-List div div div.ui-jqgrid-bdiv

我们可以用一些HTML示例吗?那会很有帮助的。嘿,谢谢你的快速回复,这不是我需要的,但它有助于进一步调查我遇到的问题。我通过ajax调用一个php脚本来加载这个额外的jquery,这个php脚本正在进行响应。似乎一旦我通过.htmldate将jquery和html放入容器中;它的设置将选择器的值设置为它所等于的值我有两个列表JK List和AZ List,而不是它实际上根据所有内容的值选择多个内容。它的设置和工作适用于JK List,但不适用于AZ List对不起,忘了提到有多个*面板,关于第一条评论下的问题,没有两个相同的ID,例如:SettingsPanel WordPanel AccountPanel,每个都有自己的ID,例如WordPanel>JK列表、AZ列表或AccountPanel>Password、Username。so+$.left.active.val+面板将显示WordPanel,如果在.left div中选择了WordPanel,然后另一部分生成AZ列表等基本上我试图让它匹配多个卷轴,但只匹配.active和.CmdActive的WordPanel JK List div div div.ui-jqgrid-bdiv WordPanel AZ List div div.ui-jqgrid-bdiv AccountPanel密码div div.ui-jqgrid-bdiv AccountPanel用户名div.ui-jqgrid-jqgrid-bdiv@Matthew - 仍然在每个示例选择器中,指定第一个ID是不必要的。它不痛,只是不需要在那里。因为子体ID在页面上只能有一个位置,所以您不需要指定它是任何东西的子体。哦,是的,我明白了,抱歉,伙计们-只是在那里添加了额外的ID以确保我正确地退出了错误
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");
});
#WordPanel #AZ-List div div div.ui-jqgrid-bdiv
#AZ-List div div div.ui-jqgrid-bdiv