2015-03-30 179 views
0

如何通过'this'引用按钮并将其传递给函数?如何将对'this'的引用传递给函数?

$(document).on("click", ".join-group-btn", function() { 
        var groupid=$(this).val(); 
        var button=$(this); 
        joinGroup(groupid, button); 
       }); 

然后我把joinGroup功能在我的图书馆一个单独的页面:为按钮动态生成

function joinGroup (groupid, buttonIn) { 
    var button = $(buttonIn); 
    var l = Ladda.create(document.querySelector(buttonIn)); 
} 

标识的将无法工作。

此抛出:

Dom exception 12: An invalid or illegal string was specified 

感谢您的帮助!非常感谢。

+0

'Ladda.create'作为参数期待什么,它有什么作用? – Musa 2015-03-30 21:11:08

+0

您已经将按钮作为一个元素发送。你不必做'$(buttonIn)','buttonIn'已经是你想要的元素了。 – 2015-03-30 21:11:10

回答

0

你应该使用querySelector与CSS-一样的语法选择

buttonIn是一个jQuery对象元素

document.querySelector(buttonIn) // you need to pass a String selector 
           // like "#someId", 
           // not an jQuery object 

一个例子是:

$(document).on("click", ".join-group-btn", function() { 
    joinGroup(this.value, $(this), this.id ); 
}); 


function joinGroup (value, $this, id) { 
    // console.log(value);  // "Some Value" 
    // console.log($this);  // [Object] the clicked jQuery Element 
    // console.log( id );  // "someID" 
    // Now if you want to use querySelector 
    var theButton = document.querySelector("#"+ id); // The missing # 
    // Or Directly operate over the `button` Element object argument 
    // $this.css({color:"red"}); // Cause it's a jQuery element 
} 
0

document.querySelector期望选择串。但是你的函数需要一个DOM对象吗?你可以通过它:

function joinGroup (groupid, buttonIn) { 
    var l = Ladda.create(buttonIn[0]); 
} 
相关问题