如何将引用传递给'这个'成功能?

时间:2015-03-30 21:07:29

标签: javascript jquery this selector

如何通过'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));
}

由于按钮是动态生成的,因此ID不起作用。

这引发:

Dom exception 12: An invalid or illegal string was specified

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

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

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

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