0

一連の hrefs から ID を取得したかったのですが...探していた答えが得られました - ただし、既存のコードのコンテキストでは機能しません -

「削除確認」と「編集ダイアログ呼び出し」の両方が jsFiddle http://jsfiddle.net/RK4Ye/で機能します - ただし、jQuery を介してリンクが生成された場合は機能しません....原因がわかりません.. .しかし、他のすべてのjsを削除しましたが、これらは機能しません...その他の情報-ページはjQueryUIタブのタブとして実行されます...

HELP PLZ ..問題を見つける方法さえわかりません.これら2つの機能を追加する前にすべてのコードが機能します...そしてエラーはスローされません....

問題:編集リンクと削除リンクの両方がhrefに移動し、クラスセレクターがクリックイベントをキャッチせず、リクエストを停止することです...(ajax呼び出しにより、動作を完全に複製することが不可能になることに気づきました- しかし、それが戻ってきて適切に機能しているという私の言葉を信じてください - しかし、念のために JSON パケットを含めます)

$( function() {

function loadTable() {
    $.ajax({
        type: 'POST',   
        url: 'list.php',    
        dataType: 'json',   
        success: function ( data ) {                
            var items = [];
            var line = 1;

            // clear the table
            $( '#companies-list' ).html( '' );


            // the real data
            $.each( data.companies, function ( key, value ) {   
                var thisRowClass = 'odd';
                if ( line % 2 ) {
                    thisRowClass = 'even';
                }
                items.push( '<tr class="' + thisRowClass + '"><td nowrap>'  + value.company + 
                            '</td><td>' + value.address + 
                            '</td><td>' + value.city + 
                            '</td><td>' + value.state + 
                            '</td><td>' + value.zip + 
                            '</td><td nowrap>' + value.phone + 
                            '</td><td>' + value.contact + 
                            '</td><td>' + value.email + 
                            '</td><td>' + value.jobscurrent + 
                            '</td><td>' + value.jobsdone + 
                            '</td><td nowrap> <a href="m/company.php"  data-identity="' + value.id + '" class="uLink">edit</a> |  <a href="m/company.php?d=' + value.id + '" class="dLink">delete</a> ' +
                            '</td></tr>' ); 
                line++ ;
            }); 

            $( '#companies-list' ).append( items.join( '' ) );                                 

        },

        error: function () {    
            // there's an error
            $( '#message' ).html( '<p>There was a problem on the server... </p>' ); 
        }
    });
}


// pre load my list when page loads
loadTable();



// DELETE CONFIRM
$( '.dLink' ).click( function( event ) {
    var response = confirm( 'Are you sure you want to delete this item?' );
    //the following is the tertiary version of: if (response) { return true; } else { return false; }
    return( response ) ? true : false;
});


// EDIT DIALOG CALL     
$( '.uLink' ).click( function() {
    var id = $( this ).data( 'identity' );
    alert( id );

    return false;
});

});

HTMLは次のようになります

<div id="companies-container" class="ui-widget">
<h3>List of Companies</h3>
<table id="companies" class="ui-widget ui-widget-content list"> 
<thead>
    <tr class="ui-widget-header ">
        <th>Company</th>
        <th>Address</th>
        <th>City</th>       
        <th>State</th>
        <th>Zip</th>
        <th>Phone</th>
        <th>Contact</th>
        <th>Email</th>      
        <th>Jobs Current</th>
        <th>Jobs Done</th>
        <th>&nbsp;</th>
    </tr>
</thead>

<tbody id="companies-list"> 
</tbody>

<tfoot> 
</tfoot>
</table>
</div>

サンプルの JSON パケット:

{ "count": "3", "companies": [{ "id":"2", "company":"Main Customer A", "address":"1234 street ", "city":"Gallatin", "state":"TN", "zip":"30766", "phone":"", "contact":"", "email":"", "jobscurrent":"", "jobsdone":"" },{ "id":"3", "company":"Sub Customer B", "address":"232 road ", "city":"Galatan ", "state":"TN", "zip":"60766", "phone":"", "contact":"", "email":"", "jobscurrent":"", "jobsdone":"" },{ "id":"4", "company":"Sub Customer C", "address":"333 pkwy ", "city":"Nashville", "state":"TN", "zip":"37204", "phone":"", "contact":"", "email":"", "jobscurrent":"", "jobsdone":"" } ] }
4

2 に答える 2

1

いくつかのこと。ID をアンカー リンクの ID として渡すことができます...

thing one <a href="x.php?id=1" class="e" id='edit-1'>edit</a>


$('.e').click(function(event) {
 //prevent the browser from going anywhere
  event.preventDefault();
  var id = this.id.replace('edit-','');

  // NOW YOU HAVE THE ID IN THE VARIABLE > id
  // Do with it as you wish


});

また、削除機能を間違えました。Default() を防ぐ必要はありません...

$('d').click(function() {
   var response = confirm('Do you want to delete this?');
   //the following is the tertiary version of: if (response) { return true; } else { return false; }
   return (response) ? true : false;
}

そしてあなたのコードで:

<a href="?delete={ID}" class'd'>DELETE</a>

または、次のようにすることもできます。

<a href="?delete={ID}" onclick="return confirm('Do you wnat to delete this?')">DELETE</a>
于 2013-01-25T03:35:12.497 に答える
1

この質問は私を混乱させましたが、これがあなたが求めているものだと思います。data属性と jQuery の対応するメソッドを使用dataして、値を取得できます。

したがって、これへのリンクのhtmlを変更してください

<a class="e" href="/somelink" data-identity="23">Edit</a>

そして、これへのクリックハンドラー

$('.e').click( function() {
    // notice that you just use the text after the dash to grab the value
    var id = $(this).data('identity');

    // ajax to pull the details

    // populate form

    // open dialog (with form populated
    $('#myForm').dialog('open');
    return false;
});

それはあなたのすべての後に答えますか?これは、URL から値を解析しようとするよりもはるかに簡単な方法です。

于 2013-01-25T02:15:11.267 に答える