Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery on()按元素而不是字符串选择器委托_Jquery_Selector - Fatal编程技术网

JQuery on()按元素而不是字符串选择器委托

JQuery on()按元素而不是字符串选择器委托,jquery,selector,Jquery,Selector,我有一个方法看起来有点像这样: function turnBlue() { $(this).css('background-color','blue'); } function fillWithGoodies(obj) { var goodie_box = $("<div id='goodie_box'>Goodies! Click me and my parent will turn blue.</div>"); $(obj).append(

我有一个方法看起来有点像这样:

function turnBlue()
{
    $(this).css('background-color','blue');
}

function fillWithGoodies(obj)
{
    var goodie_box = $("<div id='goodie_box'>Goodies!  Click me and my parent will turn blue.</div>");
    $(obj).append(goodie_box);
    $(goodie_box).on('click', obj, turnBlue);
}
有没有一种方法可以在不改变体系结构的情况下做到这一点

注意:我知道我可以做下面的工作,但我这里的示例只是实际代码的一个子集。我的问题是:你能找到一个对象的选择器吗

    // Don't want to have to do this:
    $(obj).on('click', function() { doSomething(obj) } );

注意#2:调用parent()并不是解决这个问题的方法:真正的代码创建了一个复杂的动态对象,父对象可以是任何深度。

有许多选择器,有无数种可能组合CSS类、伪类等。我不相信实施它是可行的。您的链接还说,…属性从来都不是可以使用的选择器的可靠指示器…

此外,
选择器
属性不适用于您可能理解的用途。在文档中添加一个lokk:选择器字符串,用于筛选触发事件的选定元素的后代

但也有可能将数据传递给处理程序。文件样本:

function greet(event) { alert("Hello "+event.data.name); }
$("button").on("click", { name: "Karl" }, greet);
$("button").on("click", { name: "Addy" }, greet);
因此,在您的情况下,它将如下所示:

function turnBlue(event) {
    $(event.data).css('background-color','blue');
}

function fillWithGoodies(obj) {
    var goodie_box = $("<div id='goodie_box'>Goodies!  Click me and my parent will turn blue.</div>");
    $(obj).append(goodie_box);
    $(goodie_box).on('click', obj, turnBlue);
}
功能转蓝(事件){
$(event.data).css('background-color','blue');
}
功能填充糖果(obj){
var goodie_box=$(“Goodies!点击我,我的父母会变成蓝色。”);
$(obj).附加(货物箱);
$(goodie_box)。在('click',obj,turnBlue)上;
}
您能这样做吗

function doSomething(that)
{
    console.log(that);
}

function fillWithGoodies(obj)
{
    $(obj).append("<div id='goodie_box'>Goodies!</div>");
    $(obj).click(function(){
      doSomething(obj);
    });
}
函数doSomething(that)
{
console.log(那个);
}
功能填充糖果(obj)
{
$(obj).append(“Goodies!”);
$(对象)。单击(函数(){
剂量测定法(obj);
});
}

如果在([selector])上的
中放置一个参数,而该参数不是选择器,它将转到
[data]
,因此您可以尝试以下操作:

function turnBlue(e)
{
    $(e.data).css('background-color','blue');
}

function fillWithGoodies(obj)
{
    var goodie_box = $("<div id='goodie_box'>Goodies!  Click me and my parent will turn blue.</div>");
    $(obj).append(goodie_box);
    $(goodie_box).on('click', obj, turnBlue);
}
功能转蓝(e)
{
$(e.data).css('background-color','blue');
}
功能填充糖果(obj)
{
var goodie_box=$(“Goodies!点击我,我的父母会变成蓝色。”);
$(obj).附加(货物箱);
$(goodie_box)。在('click',obj,turnBlue)上;
}

有关更多信息,请参见('click',doSomething')不起作用?哎呀,说得好。我的例子不正确。修正..一旦你修正了YD1m问题,它应该是wotkBrilliant!那正是我想要的。谢谢Jarvan!(看起来马文比你先找到了答案)是的——这就是我要找的。我不知道event.data属性。谢谢你,马文!
function turnBlue(e)
{
    $(e.data).css('background-color','blue');
}

function fillWithGoodies(obj)
{
    var goodie_box = $("<div id='goodie_box'>Goodies!  Click me and my parent will turn blue.</div>");
    $(obj).append(goodie_box);
    $(goodie_box).on('click', obj, turnBlue);
}