سؤال

أحاول تحديد القيمة الداخلية للأخوة الأولى - باستخدام jQuery - في بيئة لا يمكنني تغيير علامة HTML.

لدي ما يلي:

<tr>
    <td>3</td>
    <td>bob</td>
    <td>smith</td>
    <td>bob@example.com</td>
    <td>
        <img src="bobsmith.png" onclick="doSomething()" />
    </td>
</tr>

أحاول الحصول على قيمة الأولى <td> كالآتي:

function doSomething() {
    var temp = $(this).parent().parent().children().filter(':first');
    alert("you clicked person #" + temp.html());
}

كل ما أحصل عليه من هذا null.

لقد جربت مجموعات مختلفة مع .siblings() تعمل أيضًا ، ولكن دون جدوى.

أيه أفكار؟

شكرًا،

ملحوظة: لقد نسيت أن أذكر أن الجدول المقتطف من تم تحميله ديناميكيًا وتحديثه من مكالمة AJAX. قد يكون هذا مناسبًا للاقتراحات التي تشمل الربط.

المحلول:لقد ذهبت مع الحل التالي ، مستوحى من الإجابة المقبولة:

<tr>
    <td>3</td>
    <td>bob</td>
    <td>smith</td>
    <td>bob@example.com</td>
    <td>
        <img src="bobsmith.png" onclick="doSomething(this)" />
    </td>
</tr>

وللجافا سكريبت jQuery:

function startStopNode(el) {
    var temp = $(el).parent().siblings(':first').html();
    alert("you clicked: " + temp);
}
هل كانت مفيدة؟

المحلول

$( 'td:first-child', $( this ).parents ( 'tr' ) ).html ();

سيؤدي ذلك إلى تحديد عنصر TD الأول (: First-Child Filter) في TR الأصل للصورة. parents() يعيد جميع آباء العنصر ، ونقوم بتصفية الوالدين بحيث يتم إرجاع عناصر TR فقط.

حاول أيضًا كتابة صورتك مثل:

<img src="bobsmith.png" onclick="doSomething(this)" />

ووظيفةك مثل ذلك:

function doSomething ( imgEl ) {
}

والاستخدام imgEl بدلاً من this

نصائح أخرى

وجدت الحل الخاص بي

الطريقة الصحيحة هي التالية giveacodicetagpre.

في أن هناك بعض الأساليب الفرعية

أعرف أن لدي عمود تلقائي سيتم تحديثه بعد التغييرات.

لذلك ترد على هذا العمود (يسمى "المدة").كتبت هذا البرنامج النصي بسيط Snippled giveacodicetagpre.

يتحقق إذا كان العمود الحالي هو "مدة".إذا كان هذا صحيحا، فسيتم تجواف الصفحة تلقائيا.

يعمل بشكل رائع، لكنها ليست طريقة MS جيدة.لذلك أخرجها ووردي طريقة سيناريو مخصصة وضعت ذلك في WebPart محرر محتوى (CEWP).

هذا هو انقطاع مع المعلومات الرئيسية من بلدي blogpost.

http://sharepointsascha.tumblr.com/post/79153490652/Autorefresh-SharePoint-Gantt عرض

كنت أقوم بإعداد حدث باستخدام jQuery ، لكن هذا متروك لك تمامًا.

$("table td:last img").click(function() {
    var firstTd = $(this).parents("tr").find("td:first").html();
    alert("you clicked person #" + firstTd);
}); 

بغض النظر عن ماذا ، لا يزال بإمكانك استخدام هذا المثال مع الكود الخاص بك:

function doSomething()
{
    var firstTd = $(this).parents("tr").find("td:first-child").html();
    alert("you clicked person #" + firstTd);
}

أنت على حق. "هذا" لا يتم تمريره ، فأنت بحاجة إلى تحرير HTML لجعل هذا العمل. أو فقط استخدم jQuery بدلاً من ذلك كما هو موضح أعلاه.

ربما هذا سوف يساعد شخص ما. هذا مجرد جزء من المقالة بأكملها هنا.

الفرق

إذا كنت ترغب في استخدام هذا للوصول إلى عنصر HTML الذي يتعامل مع الحدث ، فيجب عليك التأكد من أن هذه الكلمة الرئيسية مكتوبة فعليًا في خاصية OnClick. فقط في هذه الحالة ، يشير إلى عنصر HTML الذي تم تسجيل معالج الأحداث عليه. لذلك إذا قمت بذلك

element.onclick = doSomething;
alert(element.onclick)

لقد حصلت

function doSomething()
{
    this.style.color = '#cc0000';
}

كما ترون ، فإن هذه الكلمة الرئيسية موجودة في طريقة OnClick. لذلك يشير إلى عنصر HTML.

ولكن إذا قمت بذلك

<element onclick="doSomething()">
alert(element.onclick)

لقد حصلت

function onclick()
{
    doSomething()
}

هذا مجرد إشارة إلى وظيفة dosomething (). هذه الكلمة الرئيسية غير موجودة في طريقة OnClick بحيث لا تشير إلى عنصر HTML.

لدينا صف جدول حيث يكون عمودًا هو الإجراء ، تحتوي الأعمدة الأخرى على بيانات. يحتوي أحد الأعمدة على رمز المنتج (UPC). لذلك نستخدم هذا لعرض رمز المنتج عندما ينقر شخص ما على زر الإجراء:

var product_code = jQuery(obj).parents('tr').children('.upc').text();
alert('product code'+product_code);

هذا يعمل لأن خلايا الجدول لدينا لها فئات ، مثل 1919191911919 لكل صف.

يمكنك استخدام محددات أخرى من jQuery. مثل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top