点击jQuery中的触发按钮不起作用

时间:2015-12-03 07:05:19

标签: javascript jquery dom

使用dot.js我在特定网页上添加了一个按钮,当点击该按钮时,应该在文本字段中添加一些文本,然后触发另一个按钮也被点击。我通过向我的按钮添加一个单击处理程序来模拟这个,该按钮具有以下代码:

var button = $('.some-class').find('button')[0];
console.log(button); // element I expect
button.click();

然而,这不起作用,我不知道为什么。如果我执行.click()而不是.remove(),则会从页面中删除该按钮。如果我使用控制台执行相同的代码,则会单击该按钮。这告诉我我确实有正确的元素,但click()事件特别错误。

有人可以解释为什么这不适用于Safari或Chrome吗?我尝试了很多不同的东西,但我是jQuery的新手,所以我可能会错过一些有关其工作原理的细节。

5 个答案:

答案 0 :(得分:1)

我们在聊天中走到了最底层。可能导致问题的是另一个附加到(可能)主体的事件处理程序,它解除了点击。

因此解决方案是阻止event传播:

event.stopPropagation();

答案 1 :(得分:0)

在将click事件处理程序分配给按钮时,您应该使用jquery on 这应该确保每当添加了相同选择器的新按钮时(如在分配事件时),处理的事件将被分配给该按钮

一些例子here

答案 2 :(得分:0)

问题是click()函数来自jquery,你试图从DOM对象中激活click函数。

尝试

public function actionStripeHook() {


    if (Yii::app()->request->isPostRequest) {

        try {

            $postdata = file_get_contents("php://input");
            $event = json_decode($postdata);


                switch ($event->type) {

                    case 'invoice.payment_succeeded':

                        Yii::log('', 'trace', 'stripe');
                        Yii::log('==================================', 'trace', 'stripe');
                        Yii::log('==== Event (' . $event->type . ') ====', 'trace', 'stripe');
                        Yii::log('==================================', 'trace', 'stripe');
                        $customer_id = $event->data->object->customer;                            
                        $customer = Stripe_Customer::retrieve($customer_id);                            
                        $invoice = Stripe_Invoice::retrieve($event->data->object->id);

这是一个插件。 http://plnkr.co/edit/2pcgVt

答案 3 :(得分:0)

尝试jquery's trigger()功能:

$(button).trigger('click');

请参阅jsfiddle:https://jsfiddle.net/665hjqwk/

答案 4 :(得分:0)

您可以使用以下声明。

var button = $(' .some-class')。找到('按钮')[0] .trigger('点击');