javascript - jQuery .on 事件不适用于变量选择器

标签 javascript jquery

我需要创建on Click动态加载元素的功能。该元素的 ID 位于变量 $element 中。 ID 以字符串形式存储。我将其传递给 .on 事件处理程序,如下所示:

... .on("click", '"'+$element+'"', function() { ...

它不起作用并给出错误未捕获错误:语法错误,无法识别的表达式:“#2”(请参阅 Case 1 JSFiddle )。 #2 是元素的 ID。

然后我尝试将其包装在这样的函数中:

... .on("click", function() {'"'+$element+'"'}, function() { ...

但它似乎将整个 DOM 变成了可点击的元素(参见 Case 2 JSFiddle )。为什么……?

最后,Case 3 JSFiddle显示我想要的行为:如果用户单击 ID 为 #2 的元素,则会发生某些情况,如果她单击 ID 为 #3 的元素或其他任何地方,则不会发生任何情况。当选择器作为变量传递时,我无法让它工作。

<小时/>

Case 1 JSFiddle给出一个奇怪的错误。

Case 2 JSFiddle单击“a”或“b”,“a”将变为红色。

Case 3 JSFiddle这就是我所追求的。单击“a”,它变成红色,单击“b”没有任何反应。

最佳答案

从你的 fiddle ,have a look at this :

var $element = '#a2';

$("#a1").on(
        "click",
        $element,       // <-- child Selector
        function() {
            $("#a1")
            .find('span')
            .filter(function() {
                return $(this).text() === 'a';
            })
            .css('background-color', 'red');
        }
    );

请注意,id不应以数字开头,at least in 4 times .

关于javascript - jQuery .on 事件不适用于变量选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955356/

相关文章:

javascript - 根据div的内部文本计算高度

javascript - 鼠标移动时的空闲事件 - 如何在鼠标移动时永久停止脚本

javascript - 在 Bootstrap 中 toast 动画

javascript - 如何将透明度信息添加到 HEX 颜色代码?

javascript - 页面中的 ajax 调用之一导致的延迟问题

javascript - Uncaught ReferenceError : maxHeight is not defined

javascript - 使用 fadeIn() 淡化背景图像

javascript - 在 jquery 中排序事件

javascript - 两侧的 React-Native DrawerNavigator 菜单

JavaScript 无效参数