如果声明基于点击

时间:2012-07-30 17:04:38

标签: jquery click if-statement

我正在尝试检查div元素的html是否包含“您输入的代码不正确”。但是,我需要检查点击发生后是否为真。以下是我到目前为止的情况:

if($('.wpcf7-form-control').click()) {
    if($('.wpcf7-not-valid-tip-no-ajax').html() == 'Your entered code is incorrect.'){
        $('.sidebar-demo').delay(800).click();
    }
    else{
        $('#formalert').delay(800).click();
    }
}

这会创建无限循环的点击,我很确定我正在形成错误的声明但是卡住了。想法?

2 个答案:

答案 0 :(得分:1)

您必须将处理函数传递给click事件。此外,jquery-ify表单一次然后使用它。查询DOM以获取相同的元素是昂贵且多余的。

    - Edits: Use "===" it tests for value and type, does not use coercion.

    - Edits: Declare your variables with only one var statement.

    - Edits: This is purely a stylistic preference but I use a "$" when I jQuery select an element to remind myself that it has been jQueryified.


 var $wpcformControl = $('.wpcf7-form-control'),
 $wpcf7Ajax = $('.wpcf7-not-valid-tip-no-ajax'),
 $sideBarDemo = $('.sidebar-demo'),
 $formAlert = $('#formalert');

 $wpcformControl.click(function() {
     if($wpcf7Ajax.val() === 'Your entered code is incorrect.') {
         $sideBarDemo.delay(800).click();
     }
     else{
         $formAlert.delay(800).click();
     }
 });

答案 1 :(得分:1)

尝试:

$('.wpcf7-form-control').click(function() {

    if($('.wpcf7-not-valid-tip-no-ajax').text() == 'Your entered code is incorrect.') {
        $('.sidebar-demo').delay(800).click();
    }
    else{
        $('#formalert').delay(800).click();
    }

});

不确定您是否可以强制点击页面元素,就像您尝试在此处一样:

$('#formalert').delay(800).click();

在这里:

$('.sidebar-demo').delay(800).click();

我记得一年前这是可能的,但我认为现在更新的浏览器出于安全考虑限制了这一点。