Javascript onClick()问题

时间:2015-02-12 11:03:41

标签: javascript jquery

以下是我的表,其中每行有2个onClick事件。当我点击每一行时,它会调用我定义的方法,但是现在你看到有一个复选框来结束列。我想要点击这个复选框然后无需在Javascript onClick 中调用此方法,这可能吗?

注意:这里有php while循环运行:

echo "<tr onclick='getDetails($cdid), visited(this);'>";                
echo "<td class='' valign='top' align='left' width='20'>$companyName</td>";
echo "<td class='' valign='top'>$family_name</td>";
echo "<td class='' valign='top'>$given_name</td>";
echo "<td class='' valign='top'>$department</td>";
echo "<td class='' valign='top'>$title<input type='checkbox' name='add_to_project'/></td>";    
echo "</td>";
echo "</tr>";

更新:

function getDetails(id){

    try { 
        keepcontact = false;
        if($("#contentText").val() != "" && $("#contentText").val() != null)
        {
            var toCharNotes = $('#saveToChrNote').is(':checked');
            //AUTO save the charnotes if is checked without prompt
            if( toCharNotes == true ){
                var formData = new FormData($("#addNewNotes").parents('form')[0]);      
                    var cid=$(this).parents('form:first').find('#cdid').val();

                    $.ajax({
                        url: 'response.php',
                        type: 'POST',
                        xhr: function() {
                            var myXhr = $.ajaxSettings.xhr();
                            return myXhr;
                        },
                        success: function(data){                      
                          getDetails2(id);  


                        }, 
                        data: formData,
                        cache: false,
                        contentType: false,
                        processData: false
                    });
            } else {
                var saveNote = confirm("Save or clear Enter Note before proceeding ?");
                if (saveNote == true) {
                    var formData = new FormData($("#addNewNotes").parents('form')[0]);      
                    var cid=$(this).parents('form:first').find('#cdid').val();

                    $.ajax({
                        url: 'response.php',
                        type: 'POST',
                        xhr: function() {
                            var myXhr = $.ajaxSettings.xhr();
                            return myXhr;
                        },
                        success: function(data){                      
                          getDetails2(id);  


                        }, 
                        data: formData,
                        cache: false,
                        contentType: false,
                        processData: false
                    });

                } else {
                    keepcontact = true;
                    // do nothing.. :D
                    //getDetails2(id);
                }
            }
        } 
        else{
            getDetails2(id);
        }
    }
    catch(err){
        alert(err);
    } 
}

2 个答案:

答案 0 :(得分:0)

稍微修改一下你的功能

function visited(a)
{
 if(a.getAttribute("name")=="add_to_project") return;
// Rest of the code of your function

}

将此行放在函数visited

的顶部
if(a.getAttribute("name")=="add_to_project") return;

稍微修改PHP

echo "<tr onclick='getDetails($cdid, this), visited(this);'>";                

修改getDetails功能

function getDetails(a, b) 
{
if(b.getAttribute("name")=="add_to_project") return;
// Rest of the function

}

答案 1 :(得分:0)

您可以使用return false;末尾的handler停止事件冒泡。 试试这个演示场景,

HTML:

<table id="infoTable">
    <tr>
        <td>Click Here</td>
        <td>
            <input type="checkbox" id="innerCheckBox" />
        </td>
    </tr>
</table>

jQuery:

$("#infoTable tr").on("click", function(){
    alert("tr");
});

$("#innerCheckBox").on("click", function(){
    alert("checkbox");
    return false;
});

jsFIddle